home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -screenplay- / hd_installers / -whdload- / whdload_dev / patcher1.04.lha / Patcher1.04 / Patcher15.ASM < prev    next >
Assembly Source File  |  1997-03-26  |  59KB  |  3,281 lines

  1. ;V1.04    ERRORMESSAGE IF PATCH WAS CLICKED WITH NO PARAMETER SELECTED
  2. ;V1.03    VERSIONSTRING ADDED, CRC16-EVALROUTINE ADDED
  3. ;V1.02    FSSM-DEVICEPOINTER STORED, ADDED DRIVEINHIBIT-OPTION
  4. ;V1.01    COMMANDLINEPARAMETER ADDED
  5. ;V1.00    INITIAL REVISION
  6.  
  7.     INCDIR    ASM-ONE:INCLUDE2.0/
  8.  
  9.     INCLUDE LIBRARIES/DOS_LIB.I
  10.     INCLUDE    LIBRARIES/FILEHANDLER.I
  11.     INCLUDE    LIBRARIES/DOSEXTENS.I
  12.     INCLUDE    LIBRARIES/DISKFONT_LIB.I
  13.     INCLUDE EXEC/EXEC_LIB.I
  14.     INCLUDE    EXEC/MEMORY.I
  15.     INCLUDE    GRAPHICS/GRAPHICS_LIB.I
  16.     INCLUDE INTUITION/INTUITION_LIB.I
  17.     INCLUDE INTUITION/INTUITION.I
  18.     INCLUDE    DEVICES/TRACKDISK.I
  19.     INCLUDE    EXEC/IO.I
  20. ;_SYSBASE    EQU    4
  21.  
  22.     INCDIR    ASM-ONE:OWN/Patcher/
  23. ;VERSION=1
  24. ;SUBVERSION=4
  25.  
  26. debug=0
  27.  
  28. FlaggenTEMP    =    activate!WINDOWDRAG!WINDOWCLOSE    ;!REPORTMOUSE
  29. FLAGGEN    =    FLAGGENTEMP!WBENCHWINDOW!WINDOWDEPTH!GIMMEZEROZERO
  30. ICDMPFLTEMP    =    GADGETUP!ACTIVEWINDOW    ;!MOUSEBUTTONS
  31. ICDMPFL    =    ICDMPFLTEMP!INACTIVEWINDOW!CLOSEWINDOW
  32.  
  33. JAM2    = 1
  34. ;MODE_READWRITE = $3ED
  35.  
  36.  
  37. ;patcher-includefile for V1.03
  38.  
  39. PCH_FILECOUNT        = $80004450
  40. PCH_ADAPTOR        = $80004451
  41. PCH_DISKNAME        = $80004452
  42. PCH_CHECKDISK        = $80004453
  43. PCH_FILENAME        = $80004454
  44. PCH_SPECIAL        = $80004455
  45. PCH_CHANGES        = $80004456
  46. PCH_PROCESSING        = $80004457
  47. PCH_NAME        = $80004458
  48. PCH_MINVERSION        = $80004459
  49. PCH_LOADOFFSET        = $8000445A
  50. PCH_INIT        = $8000445B
  51. PCH_STATE        = $8000445C
  52. PCH_STATE2        = $8000445D
  53. PCH_APPENDSPACE        = $8000445E
  54. PCH_SAVEDATA        = $8000445F
  55. PCH_DATALENGTH        = $80004460
  56. PCH_BOOTBLOCK        = $80004461
  57. PCH_FINISH        = $80004462
  58. PCH_ERRORINPARAMETER    = $80004463
  59. PCH_SAVEPGM        = $80004464
  60.  
  61. PTB_DOSBASE        = $0
  62. PTB_ADDRESSOFFILE    = $4
  63. PTB_INTUITIONBASE    = $8
  64. PTB_GFXBASE        = $C
  65. PTB_WINDOW        = $10
  66. PTB_FILENAME        = $14
  67. PTB_FULLNAME        = $18
  68. PTB_FILESIZE        = $1C
  69. PTB_DISKNAME        = $20
  70. PTB_OPENDEVICE        = $24
  71. PTB_DEVICESOURCEPTR    = $28
  72. PTB_DEVICEDESTPTR    = $2C
  73. PTB_SPACE        = $30
  74. PTB_FORMATDEST        = $34
  75. PTB_REQUEST        = $38
  76. ;--- new since version 1.02 ---
  77. PTB_FSSMSOURCEPTR    = $3C
  78. PTB_FSSMDESTPTR        = $40
  79. PTB_INHIBITDRIVE    = $44
  80. PTB_ENABLEDRIVE        = $48
  81. ;--- new since version 1.03 ---
  82. PTB_CRC16        = $4C
  83.  
  84.     SECTION    Editor,CODE
  85.  
  86.     BRA.S    HP
  87.     DC.B    0,'$VER: Patcher 1.04 (17-jun-97 2:00:00)',0
  88.     EVEN
  89.  
  90. HP
  91.     BASEREG    DOSBAS,A5
  92.     LEA.L    DOSBAS(PC),A5
  93.     MOVE.L    A7,OSSTACK(A5)
  94.  
  95.     ifne    debug
  96.     lea    .line(PC),a0
  97.     bra.s    .contdb
  98. .line    dc.b    '-sdf2: -pasm-one:own/patcher/parameter/imagerrocknroll',0
  99.     EVEN
  100. .contdb
  101.     endc
  102.  
  103.  
  104.     BSR.W    EXAMCL
  105.     MOVE.L    (_SYSBASE).W,A6
  106.     LEA.L    INTUINAME(PC),A1
  107.     MOVE.L    #0,D0
  108.     JSR    _LVOOpenLibrary(A6)    ;Intuition öffnen
  109.     TST.L    D0
  110.     BEQ.W    ERR
  111.     MOVE.L    D0,INTUIBASE(A5)    ;Zeiger sichern
  112.     MOVE.L    (_SYSBASE).W,A6
  113.     LEA.L    DOSNAM(PC),A1
  114.     MOVEQ.L    #0,D0
  115.     JSR    _LVOOpenLibrary(A6)    ;DOS öffnen
  116.     TST.L    D0
  117.     BEQ.W    ERR
  118.     MOVE.L    D0,DOSBAS(A5)        ;Zeiger sichern
  119.     MOVE.L    (_SYSBASE).W,A6
  120.     LEA.L    GRANAME(PC),A1
  121.     MOVEQ.L    #0,D0
  122.     JSR    _LVOOpenLibrary(A6)    ;Graphic-Lib öffnen
  123.     TST.L    D0
  124.     BEQ.W    ERR
  125.     MOVE.L    D0,GRABASE(A5)        ;Zeiger sichern
  126.     MOVE.L    (_SYSBASE).W,A6
  127.     LEA.L    DISKFNTNAME(PC),A1
  128.     MOVEQ.L    #0,D0
  129.     JSR    _LVOOPENLIBRARY(A6)    ;Diskfont-Lib öffnen
  130.     TST.L    D0
  131.     BEQ.W    ERR
  132.     MOVE.L    D0,DISKFNTBASE(A5)    ;Zeiger sichern
  133.  
  134.     MOVE.L    DISKFNTBASE(PC),A6
  135.     LEA.L    RUBY_FNT(PC),A0
  136.     JSR    _LVOOPENDISKFONT(A6)
  137.     TST.L    D0
  138.     BEQ.W    ERR
  139.  
  140.     MOVE.L    #$28,D0
  141.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  142.     MOVE.L    (_SYSBASE).W,A6
  143.     JSR    _LVOALLOCMEM(A6)
  144.     TST.L    D0
  145.     BEQ.W    ERR
  146.     MOVE.L    D0,MYPORT(A5)
  147.  
  148.     MOVE.L    #$38,D0
  149.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  150.     MOVE.L    (_SYSBASE).W,A6
  151.     JSR    _LVOALLOCMEM(A6)
  152.     TST.L    D0
  153.     BEQ.W    ERR
  154.     MOVE.L    D0,BOOTIORQ(A5)
  155.  
  156.     MOVE.L    #$38,D0
  157.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  158.     MOVE.L    (_SYSBASE).W,A6
  159.     JSR    _LVOALLOCMEM(A6)
  160.     TST.L    D0
  161.     BEQ.W    ERR
  162.     MOVE.L    D0,DESTIORQ(A5)
  163.  
  164.     MOVE.L    #$38,D0
  165.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  166.     MOVE.L    (_SYSBASE).W,A6
  167.     JSR    _LVOALLOCMEM(A6)
  168.     TST.L    D0
  169.     BEQ.W    ERR
  170.     MOVE.L    D0,SOURCEIORQ(A5)
  171.  
  172.     MOVE.L    #$48,D0
  173.     MOVE.L    #MEMF_PUBLIC!MEMF_CLEAR,D1
  174.     MOVE.L    (_SYSBASE).W,A6
  175.     JSR    _LVOALLOCMEM(A6)
  176.     TST.L    D0
  177.     BEQ.W    ERR
  178.     MOVE.L    D0,DOSPACKETS(A5)
  179.  
  180.     MOVEQ.L    #-1,D0
  181.     MOVE.L    (_SYSBASE).W,A6
  182.     JSR    _LVOALLOCSIGNAL(A6)
  183.     CMP.L    #-1,D0
  184.     BEQ.W    ERR
  185.     MOVE.L    D0,SIGNALSTORE
  186.     
  187.     MOVE.L    MYPORT(PC),A4
  188.     MOVE.B    D0,MP_SIGBIT(A4)    
  189.     SUB.L    A1,A1
  190.     MOVE.L    (_SYSBASE).W,A6
  191.     JSR    _LVOFINDTASK(A6)
  192.     MOVE.L    D0,MP_SIGTASK(A4)
  193.     MOVE.B    #PA_SIGNAL,MP_FLAGS(A4)
  194.     CLR.B    LN_PRI(A4)
  195.     CLR.L    LN_NAME(A4)
  196.     MOVE.B    #NT_MSGPORT,LN_TYPE(A4)
  197.     MOVE.L    A4,A1
  198.     JSR    _LVOADDPORT(A6)
  199.     ST.B    PORTOK(A5)
  200.  
  201.     MOVE.L    MYPORT(PC),A0
  202.     MOVE.L    BOOTIORQ(PC),A1
  203.     MOVE.L    A0,MN_REPLYPORT(A1)
  204.     MOVE.W    #$20,MN_LENGTH(A1)
  205.     MOVE.B    #NT_MESSAGE,LN_TYPE(A1)
  206.     MOVE.L    DESTIORQ(PC),A1
  207.     MOVE.L    A0,MN_REPLYPORT(A1)
  208.     MOVE.W    #$20,MN_LENGTH(A1)
  209.     MOVE.B    #NT_MESSAGE,LN_TYPE(A1)
  210.     MOVE.L    SOURCEIORQ(PC),A1
  211.     MOVE.L    A0,MN_REPLYPORT(A1)
  212.     MOVE.W    #$20,MN_LENGTH(A1)
  213.     MOVE.B    #NT_MESSAGE,LN_TYPE(A1)
  214.     MOVE.L    DOSPACKETS(PC),A1
  215.     MOVE.L    A0,MN_REPLYPORT(A1)
  216.     MOVE.W    #$30,MN_LENGTH(A1)
  217.     MOVE.B    #NT_MESSAGE,LN_TYPE(A1)
  218.  
  219.     TST.B    EXEC1PARAM
  220.     BEQ.W    .ALLP
  221.     LEA.L    MEMORYBASE(PC),A3
  222.     MOVE.L    #PARAMFILENAM,D1    ;LOAD SINGLE PARAMETER (COMMAND-LINE-
  223.     MOVE.L    DOSBAS(PC),A6        ; VERSION)
  224.     JSR    _LVOLOADSEG(A6)
  225.     TST.L    D0
  226.     BEQ.W    .ENDP
  227.     LSL.L    #2,D0
  228.     ADDQ.L    #4,D0
  229.     MOVE.L    D0,(A3)
  230.     MOVE.L    D0,A0
  231.     CLR.L    (A0)
  232.     CMP.L    #'PTCH',8(A0)
  233.     BNE.S    .SP8
  234.     MOVE.L    4(A0),A0
  235. .SP31    CMP.L    #PCH_MINVERSION,(A0)+
  236.     BEQ.S    .SP30
  237.     ADDQ.L    #4,A0
  238.     TST.L    (A0)
  239.     BEQ.W    .ENDP
  240.     BRA.S    .SP31
  241.  
  242. .SP30    TST.L    (A0)
  243.     BEQ.W    .ENDP
  244.     MOVE.L    (A0),A0
  245.     CMP.B    #'V',(A0)+
  246.     BNE.W    ERR
  247.     MOVEQ.L    #0,D1            ;MAINVERSIONCHECK
  248. .SPV1    MOVE.B    (A0)+,D0
  249.     BEQ.W    ERR
  250.     AND.W    #$F,D0
  251.     LSL.W    #4,D1
  252.     OR.W    D0,D1
  253.     CMP.B    #'.',(A0)
  254.     BNE.S    .SPV1
  255.     CMP.W    #1,D1            ;VERSION-#
  256.     BHI.S    .SP8
  257.  
  258.     ADDQ.L    #1,A0            ;SKIP '.'
  259.     MOVEQ.L    #0,D1
  260.     MOVE.B    (A0)+,D0
  261.     BEQ.W    ERR
  262.     AND.W    #$F,D0
  263.     LSL.W    #4,D1
  264.     OR.W    D0,D1
  265.     MOVE.B    (A0)+,D0
  266.     BEQ.W    ERR
  267.     AND.W    #$F,D0
  268.     LSL.W    #4,D1
  269.     OR.W    D0,D1
  270.  
  271.     CMP.W    #4,D1            ;SUBVERSION-#
  272.     BHI.S    .SP8
  273.     BRA.W    .ENDP
  274.  
  275. .SP8    LEA.L    MEMORYBASE(PC),A3
  276. .SP7    MOVE.L    (A3),A2
  277.     TST.L    (A2)
  278.     BEQ.S    .SP6
  279.     MOVE.L    (A3),A3
  280.     BRA.S    .SP7
  281.  
  282. .SP6    CLR.L    (A3)
  283.     MOVE.L    A2,D1
  284.     SUBQ.L    #4,D1
  285.     LSR.L    #2,D1
  286.     MOVE.L    DOSBAS(PC),A6
  287.     JSR    _LVOUNLOADSEG(A6)
  288.     BRA.W    .ENDP
  289.  
  290. .ALLP    LEA.L    LOCKNAM(PC),A1            ;LOAD PARAMETERS
  291.     MOVE.L    A1,D1
  292.     MOVE.L    #MODE_READWRITE,D2
  293.     MOVE.L    DOSBAS(PC),A6
  294.     JSR    _LVOLOCK(A6)
  295.     TST.L    D0
  296.     BEQ.W    ERR
  297.     MOVE.L    D0,PARAMLOCK(A5)
  298.     MOVE.L    PARAMLOCK(PC),D1
  299.     MOVE.L    #PARAMINFO,D2
  300.     MOVE.L    DOSBAS(PC),A6
  301.     JSR    _LVOEXAMINE(A6)
  302.     TST.L    D0
  303.     BEQ.W    ERR
  304.     BRA.S    .1
  305.  
  306. .3    MOVE.L    PARAMLOCK(PC),D1
  307.     MOVE.L    #PARAMINFO,D2
  308.     MOVE.L    DOSBAS(PC),A6
  309.     JSR    _LVOEXNEXT(A6)
  310.     TST.L    D0
  311.     BEQ.W    .2
  312. .1    LEA.L    PARAMINFO,A0
  313.     CMP.L    #-3,FIB_DIRENTRYTYPE(A0)
  314.     BNE.S    .3
  315.     LEA.L    MEMORYBASE(PC),A3
  316. .5    TST.L    (A3)
  317.     BEQ.S    .4
  318.     MOVE.L    (A3),A3
  319.     BRA.S    .5
  320.  
  321. .4
  322.     LEA.L    PARAMINFO,A0
  323.     LEA.L    FIB_FILENAME(A0),A1
  324.     LEA.L    BUFFILNAM(PC),A0
  325.     MOVEQ.L    #$68-1,D0
  326. .26    MOVE.B    (A1)+,(A0)+
  327.     DBF    D0,.26
  328.  
  329.     MOVE.L    #FILENAM,D1
  330.     MOVE.L    DOSBAS(PC),A6
  331.     JSR    _LVOLOADSEG(A6)
  332.     TST.L    D0
  333.     BEQ.S    .3
  334.     LSL.L    #2,D0
  335.     ADDQ.L    #4,D0
  336.     MOVE.L    D0,(A3)
  337.     MOVE.L    D0,A0
  338.     CLR.L    (A0)
  339.     CMP.L    #'PTCH',8(A0)
  340.     BNE.S    .8
  341.     MOVE.L    4(A0),A0
  342. .31    CMP.L    #PCH_MINVERSION,(A0)+
  343.     BEQ.S    .30
  344.     ADDQ.L    #4,A0
  345.     TST.L    (A0)
  346.     BEQ.W    .3
  347.     BRA.S    .31
  348.  
  349. .30    TST.L    (A0)
  350.     BEQ.W    .3
  351.     MOVE.L    (A0),A0
  352.     CMP.B    #'V',(A0)+
  353.     BNE.W    ERR
  354.     MOVEQ.L    #0,D1            ;MAINVERSIONCHECK
  355. .APV1    MOVE.B    (A0)+,D0
  356.     BEQ.W    ERR
  357.     AND.W    #$F,D0
  358.     LSL.W    #4,D1
  359.     OR.W    D0,D1
  360.     CMP.B    #'.',(A0)
  361.     BNE.S    .APV1
  362.     CMP.W    #1,D1            ;VERSION-#
  363.     BHI.S    .8
  364.  
  365.     ADDQ.L    #1,A0            ;SKIP '.'
  366.     MOVEQ.L    #0,D1
  367.     MOVE.B    (A0)+,D0
  368.     BEQ.W    ERR
  369.     AND.W    #$F,D0
  370.     LSL.W    #4,D1
  371.     OR.W    D0,D1
  372.     MOVE.B    (A0)+,D0
  373.     BEQ.W    ERR
  374.     AND.W    #$F,D0
  375.     LSL.W    #4,D1
  376.     OR.W    D0,D1
  377.  
  378.     CMP.W    #4,D1            ;SUBVERSION-#
  379.     BHI.S    .8
  380.     BRA.W    .3
  381.  
  382. .8    LEA.L    MEMORYBASE(PC),A3
  383. .7    MOVE.L    (A3),A2
  384.     TST.L    (A2)
  385.     BEQ.S    .6
  386.     MOVE.L    (A3),A3
  387.     BRA.S    .7
  388.  
  389. .6    CLR.L    (A3)
  390.     MOVE.L    A2,D1
  391.     SUBQ.L    #4,D1
  392.     LSR.L    #2,D1
  393.     MOVE.L    DOSBAS(PC),A6
  394.     JSR    _LVOUNLOADSEG(A6)
  395.     BRA.W    .3
  396.  
  397. .2    MOVE.L    PARAMLOCK(PC),D1
  398.     MOVE.L    DOSBAS(PC),A6
  399.     JSR    _LVOUNLOCK(A6)
  400.     CLR.L    PARAMLOCK        ;END OF LOADING PARAMETERS
  401.  
  402.  
  403.  
  404. .ENDP    LEA.L    MEMORYBASE(PC),A3
  405.     TST.L    (A3)
  406.     BEQ.W    ERR
  407.     MOVEQ.L    #0,D0
  408. .10    MOVE.L    (A3),A3
  409.     ADDQ.W    #1,D0
  410.     TST.L    (A3)
  411.     BNE.S    .10
  412.     MOVE.W    D0,PARAMCOUNT
  413.  
  414.     TST.W    PARAMCOUNT
  415.     BEQ.W    ERR
  416.     MOVE.L    #$FFFF,D0
  417.     MOVEQ.L    #0,D1
  418.     MOVE.W    PARAMCOUNT,D1
  419.     CMP.W    #5,D1
  420.     BLS.S    .PI1
  421.     MULU.W    #5,D0
  422.     DIVU.W    D1,D0
  423.     BRA.S    .11
  424.  
  425. .PI1    MOVE.L    #$FFFF,D0
  426.  
  427. .11    LEA.L    PROPINFO1(PC),A0
  428.     MOVE.W    D0,PI_VERTBODY(A0)
  429.     MOVE.W    D0,LENGTHBODY
  430.  
  431.     MOVE.W    PARAMCOUNT(PC),D1
  432.     SUBQ.W    #1,D1
  433. .27    LEA.L    MEMORYBASE(PC),A4
  434.     MOVE.W    PARAMCOUNT(PC),D0
  435.     SUBQ.W    #1,D0
  436. .15    DBF    D0,.13
  437.     DBF    D1,.27
  438.     BRA.S    .14
  439.  
  440. .13
  441. .16    MOVE.L    (A4),A3
  442.     TST.L    (A3)
  443.     BEQ.S    .15
  444.     MOVE.L    $4(A3),A1
  445. .18    CMP.L    #PCH_NAME,(A1)+
  446.     BEQ.S    .17
  447.     ADDQ.L    #4,A1
  448.     TST.L    (A1)
  449.     BEQ.W    ERR
  450.     BRA.S    .18
  451.  
  452. .17    MOVE.L    (A1),A1
  453.     MOVE.L    (A3),A2
  454.     MOVE.L    4(A2),A0
  455. .19    CMP.L    #PCH_NAME,(A0)+
  456.     BEQ.S    .20
  457.     ADDQ.L    #4,A0
  458.     TST.L    (A0)
  459.     BEQ.W    ERR
  460.     BRA.S    .19
  461.  
  462. .20    MOVE.L    (A0),A0    
  463. .23    CMPM.B    (A1)+,(A0)+
  464.     BHI.S    .21
  465.     BLO.S    .22
  466.     TST.B    (A1)
  467.     BEQ.S    .21
  468.     TST.B    (A0)
  469.     BEQ.S    .22
  470.     BRA.S    .23
  471.  
  472. .22    MOVE.L    (A2),A1
  473.     MOVE.L    A2,(A4)
  474.     MOVE.L    A3,(A2)
  475.     MOVE.L    A1,(A3)
  476. .21    MOVE.L    (A4),A4
  477.     BRA.S    .15
  478.  
  479. .14    MOVE.W    PARAMCOUNT(PC),D0
  480.     CMP.W    #$5,D0
  481.     BLS.S    .24
  482.     MOVEQ.L    #6,D0
  483. .24    MOVEQ.L    #6,D1
  484.     SUB.W    D0,D1
  485.     MULU.W    #$18,D1
  486.     JMP    .25(PC,D1.W)
  487.  
  488. .25    BCLR    #0,AUFLAGS
  489.     BCLR    #0,ADFLAGS
  490.     BCLR    #0,P1FLAGS
  491.     MOVEQ.L    #5,D0
  492.     BSR.W    GETPARPTR
  493.     MOVE.L    D0,T5PTR
  494.     BCLR    #0,G5FLAGS
  495.     NOP
  496.     NOP
  497.     MOVEQ.L    #4,D0
  498.     BSR.W    GETPARPTR
  499.     MOVE.L    D0,T4PTR
  500.     BCLR    #0,G4FLAGS
  501.     NOP
  502.     NOP
  503.     MOVEQ.L    #3,D0
  504.     BSR.W    GETPARPTR
  505.     MOVE.L    D0,T3PTR
  506.     BCLR    #0,G3FLAGS
  507.     NOP
  508.     NOP
  509.     MOVEQ.L    #2,D0
  510.     BSR.W    GETPARPTR
  511.     MOVE.L    D0,T2PTR
  512.     BCLR    #0,G2FLAGS
  513.     NOP
  514.     NOP
  515.     MOVEQ.L    #1,D0
  516.     BSR.W    GETPARPTR
  517.     MOVE.L    D0,T1PTR
  518.  
  519.     MOVE.L    INTUIBASE(PC),A6
  520.     LEA.L    WINDOW1DATEN,a0
  521.     JSR    _LVOOpenWindow(a6)    ;Window öffnen
  522.     TST.L    D0
  523.     BEQ.W    ERR
  524.     MOVE.L    D0,WINDOW1        ;Zeiger sichern
  525.  
  526.     MOVE.L    WINDOW1(PC),A0
  527.     MOVE.L    $32(A0),A4
  528.     MOVE.L    A4,WIN1RASTPORT
  529.  
  530.     LEA.L    RUBY_FNT(PC),A0
  531.     MOVE.L    GRABASE(PC),A6
  532.     JSR    _LVOOPENFONT(A6)
  533.     TST.L    D0
  534.     BEQ.W    ERR
  535.     
  536.     MOVE.L    D0,A0
  537.     CMP.W    #$8,$14(A0)
  538.     BNE.W    ERR
  539.  
  540.     MOVE.L    A4,A1
  541.     MOVE.L    GRABASE(PC),A6
  542.     JSR    _LVOSETFONT(A6)
  543.  
  544.     MOVE.L    WIN1RASTPORT(PC),A1
  545.     MOVEQ.L    #3,D0
  546.     MOVE.L    GRABASE(PC),A6
  547.     JSR    _LVOSETAPEN(A6)
  548.  
  549.     MOVE.L    WIN1RASTPORT(PC),A1
  550.     MOVE.L    #25+405,D0
  551.     MOVE.L    #18,D1
  552.     MOVE.L    GRABASE(PC),A6
  553.     JSR    _LVOMOVE(A6)
  554.     MOVE.L    WIN1RASTPORT(PC),A1
  555.     MOVEQ.L    #5,D0
  556.     LEA.L    POINTARRAY1(PC),A0
  557.     MOVE.L    GRABASE(PC),A6
  558.     JSR    _LVOPOLYDRAW(A6)
  559.  
  560.     MOVE.L    WIN1RASTPORT(PC),A1
  561.     MOVE.L    #449,D0
  562.     MOVE.L    #81,D1
  563.     MOVE.L    GRABASE(PC),A6
  564.     JSR    _LVOMOVE(A6)
  565.     MOVE.L    WIN1RASTPORT(PC),A1
  566.     MOVEQ.L    #5,D0
  567.     LEA.L    POINTARRAY2(PC),A0
  568.     MOVE.L    GRABASE(PC),A6
  569.     JSR    _LVOPOLYDRAW(A6)
  570.  
  571.     MOVE.L    WIN1RASTPORT(PC),A1
  572.     MOVE.L    #449,D0
  573.     MOVE.L    #123,D1
  574.     MOVE.L    GRABASE(PC),A6
  575.     JSR    _LVOMOVE(A6)
  576.     MOVE.L    WIN1RASTPORT(PC),A1
  577.     MOVEQ.L    #5,D0
  578.     LEA.L    POINTARRAY3(PC),A0
  579.     MOVE.L    GRABASE(PC),A6
  580.     JSR    _LVOPOLYDRAW(A6)
  581.  
  582.     MOVE.L    WIN1RASTPORT(PC),A1
  583.     MOVEQ.L    #1,D0
  584.     MOVE.L    GRABASE(PC),A6
  585.     JSR    _LVOSETAPEN(A6)
  586.  
  587.     MOVE.L    WIN1RASTPORT(PC),A1
  588.     MOVE.L    #28,D0
  589.     MOVE.L    #79,D1
  590.     MOVE.L    GRABASE(PC),A6
  591.     JSR    _LVOMOVE(A6)
  592.     MOVE.L    #NOSELECTEND-NOSELECT,D0
  593.     MOVE.L    WIN1RASTPORT(PC),A1
  594.     LEA.L    NOSELECT(PC),A0
  595.     MOVE.L    GRABASE(PC),A6
  596.     JSR    _LVOTEXT(A6)
  597.  
  598.     MOVE.L    WIN1RASTPORT(PC),A1
  599.     MOVE.L    #28,D0
  600.     MOVE.L    #89,D1
  601.     MOVE.L    GRABASE(PC),A6
  602.     JSR    _LVOMOVE(A6)
  603.     MOVEQ.L    #0,D0
  604.  
  605.     MOVE.L    #SRCDEVICE-SRCINFO-1,D0
  606.     LEA.L    SRCDEVICE(PC),A1
  607. .T1    ADDQ.L    #1,D0
  608.     TST.B    (A1)+
  609.     BNE.S    .T1
  610.  
  611.     MOVE.L    WIN1RASTPORT(PC),A1
  612.     LEA.L    SRCINFO(PC),A0
  613.     MOVE.L    GRABASE(PC),A6
  614.     JSR    _LVOTEXT(A6)
  615.  
  616.     MOVE.L    WIN1RASTPORT(PC),A1
  617.     MOVE.L    #28,D0
  618.     MOVE.L    #99,D1
  619.     MOVE.L    GRABASE(PC),A6
  620.     JSR    _LVOMOVE(A6)
  621.     MOVE.L    #DESTDEVICE-DESTINFO-1,D0
  622.     LEA.L    DESTDEVICE(PC),A1
  623. .T2    ADDQ.L    #1,D0
  624.     TST.B    (A1)+
  625.     BNE.S    .T2
  626.     MOVE.L    WIN1RASTPORT(PC),A1
  627.     LEA.L    DESTINFO(PC),A0
  628.     MOVE.L    GRABASE(PC),A6
  629.     JSR    _LVOTEXT(A6)
  630.  
  631.     MOVE.L    WIN1RASTPORT(PC),A1
  632.     MOVE.L    #28,D0
  633.     MOVE.L    #121,D1
  634.     MOVE.L    GRABASE(PC),A6
  635.     JSR    _LVOMOVE(A6)
  636.     MOVE.L    #WELCOMEEND-WELCOME,D0
  637.     MOVE.L    WIN1RASTPORT(PC),A1
  638.     LEA.L    WELCOME(PC),A0
  639.     MOVE.L    GRABASE(PC),A6
  640.     JSR    _LVOTEXT(A6)
  641.  
  642.     MOVE.L    WIN1RASTPORT(PC),A1
  643.     MOVE.L    #28,D0
  644.     MOVE.L    #131,D1
  645.     MOVE.L    GRABASE(PC),A6
  646.     JSR    _LVOMOVE(A6)
  647.     MOVE.L    #WRITTENEND-WRITTEN,D0
  648.     MOVE.L    WIN1RASTPORT(PC),A1
  649.     LEA.L    WRITTEN(PC),A0
  650.     MOVE.L    GRABASE(PC),A6
  651.     JSR    _LVOTEXT(A6)
  652.  
  653. ;    TST.B    EXEC1PARAM
  654. ;    BEQ.S    Y
  655. ;                    ;1PARAMETER-STUFF HERE
  656.  
  657.  
  658.     BRA.S    Y
  659.  
  660. SCHLAEFT    BSR.W    SCHLAFEN
  661. .1    BTST.L    #$12,d4            ;WINDOW gerade aktiviert?
  662.     BEQ.S    SCHLAEFT
  663.  
  664. Y    BSR.W    SCHLAFEN
  665.     BTST.L    #$13,d4            ;WINDOW gerade inaktiviert?
  666.     BNE.S    SCHLAEFT
  667.  
  668.     BTST.L    #9,D4            ;QUIT GEDRÜCKT?
  669.     BEQ.S    .10
  670.     BRA.S    ENDE
  671.  
  672. .10    BTST.L    #6,D4            ;GADGET LOSGELASSEN?
  673.     BEQ.S    .8
  674.     BSR.W    CHECKGADGETS
  675.     BRA.S    Y
  676.  
  677. .8    BTST.L    #3,D4            ;Maustaste angeklickt?
  678.     beq.w    next1
  679. next1
  680.     btst    #7,$bfe001
  681.     beq    ende
  682.     BRA.S    Y
  683.         
  684. ENDE    MOVEQ.L    #0,D0
  685.     BEQ.S    ENDE1
  686.  
  687. ERR    MOVE.L    OSSTACK(PC),A7
  688.     MOVEQ.L    #20,D0
  689.  
  690. ENDE1    MOVE.L    D0,-(A7)
  691.     MOVE.L    INTUIBASE(PC),A6  
  692.     TST.L    WINDOW1
  693.     BEQ.S    .1
  694.     MOVE.L    WINDOW1(PC),A0
  695.     JSR    _LVOCloseWindow(A6)    ;Window schließen
  696.  
  697. .1    TST.L    FILHANDLE
  698.     BEQ.S    .12
  699.     MOVE.L    FILHANDLE(PC),D1
  700.     MOVE.L    DOSBAS(PC),A6
  701.     JSR    _LVOCLOSE(A6)
  702.  
  703. .12    LEA.L    MEMORYBASE(PC),A3
  704.     TST.L    (A3)
  705.     BEQ.S    .9
  706. .10    MOVE.L    (A3),A2
  707.     TST.L    (A2)
  708.     BEQ.S    .11
  709.     MOVE.L    (A3),A3
  710.     BRA.S    .10
  711.  
  712. .11    CLR.L    (A3)
  713.     MOVE.L    A2,D1
  714.     SUBQ.L    #4,D1
  715.     LSR.L    #2,D1
  716.     MOVE.L    DOSBAS(PC),A6
  717.     JSR    _LVOUNLOADSEG(A6)
  718.     BRA.S    .12
  719.  
  720. .9    TST.L    PARAMLOCK(A5)
  721.     BEQ.S    .2
  722.     MOVE.L    PARAMLOCK(PC),D1
  723.     MOVE.L    DOSBAS(PC),A6
  724.     JSR    _LVOUNLOCK(A6)
  725. .2
  726.     TST.B    PORTOK(A5)
  727.     BEQ.S    .S2
  728.     MOVE.L    MYPORT(PC),A1
  729.     MOVE.L    (_SYSBASE).W,A6
  730.     JSR    _LVOREMPORT(A6)
  731. .S2
  732.     MOVE.L    SIGNALSTORE(PC),D0
  733.     CMP.L    #-1,D0
  734.     BEQ.S    .S1
  735.     MOVE.L    (_SYSBASE).W,A6
  736.     JSR    _LVOFREESIGNAL(A6)
  737.  
  738. .S1    TST.L    BOOTIORQ(A5)
  739.     BEQ.S    .M1
  740.     MOVE.L    BOOTIORQ(PC),A1
  741.     MOVE.L    #$38,D0
  742.     MOVE.L    (_SYSBASE).W,A6
  743.     JSR    _LVOFREEMEM(A6)
  744. .M1
  745.     TST.L    DOSPACKETS(A5)
  746.     BEQ.S    .M5
  747.     MOVE.L    DOSPACKETS(PC),A1
  748.     MOVE.L    #$48,D0
  749.     MOVE.L    (_SYSBASE).W,A6
  750.     JSR    _LVOFREEMEM(A6)
  751. .M5
  752.     TST.L    DESTIORQ(A5)
  753.     BEQ.S    .M2
  754.     MOVE.L    DESTIORQ(PC),A1
  755.     MOVE.L    #$38,D0
  756.     MOVE.L    (_SYSBASE).W,A6
  757.     JSR    _LVOFREEMEM(A6)
  758. .M2
  759.     TST.L    SOURCEIORQ(A5)
  760.     BEQ.S    .M3
  761.     MOVE.L    SOURCEIORQ(PC),A1
  762.     MOVE.L    #$38,D0
  763.     MOVE.L    (_SYSBASE).W,A6
  764.     JSR    _LVOFREEMEM(A6)
  765. .M3
  766.     TST.L    MYPORT(A5)
  767.     BEQ.S    .M4
  768.     MOVE.L    MYPORT(PC),A1
  769.     MOVE.L    #$28,D0
  770.     MOVE.L    (_SYSBASE).W,A6
  771.     JSR    _LVOFREEMEM(A6)
  772. .M4
  773.  
  774.     TST.L    GRABASE
  775.     BEQ.S    .3
  776.     MOVE.L    (_SYSBASE).W,A6
  777.     MOVE.L    GRABASE(PC),A1
  778.     JSR    _LVOcloselibrary(a6)    ;Graphic-Lib schliessen
  779.  
  780. .3    TST.L    DOSBAS
  781.     BEQ.S    .6
  782.     MOVE.L    (_SYSBASE).W,A6
  783.     MOVE.L    DOSBAS(PC),A1
  784.     JSR    _LVOcloselibrary(a6)    ;DOS-Lib schliessen
  785.  
  786. .6    tst.l    INTUIBASE
  787.     beq.s    .4
  788.     move.l    (_SYSBASE).W,A6
  789.     move.l    INTUIBASE(PC),A1
  790.     jsr    _LVOCloseLibrary(A6)    ;Intuition-Lib schließen
  791.  
  792. .4    tst.l    DISKFNTBASE
  793.     beq.s    .5
  794.     move.l    (_SYSBASE).W,A6
  795.     move.l    DISKFNTBASE(PC),A1
  796.     jsr    _LVOCloseLibrary(A6)    ;DISKFONT-Lib schließen
  797.  
  798. .5    move.l    (sp)+,d0
  799.     rts
  800.  
  801. *******************************************************************************
  802.  
  803. CHECKGADGETS
  804.     LEA.L    MSGBUFFER+2(PC),A0
  805.     BTST.B    #6,IM_CLASS+3-$14(A0)
  806.     BNE.S    .2
  807.     MOVEQ.L    #-1,D0
  808.     RTS
  809.  
  810. .2    MOVE.L    IM_IADDRESS-$14(A0),D0
  811.     CMP.L    #PROPGADGET1,D0
  812.     BEQ.W    DRAWPARS
  813.     CMP.L    #ARROWUP,D0
  814.     BEQ.W    DRAWONEUP
  815.     CMP.L    #ARROWDOWN,D0
  816.     BEQ.W    DRAWONEDOWN
  817.     CMP.L    #GADGET1,D0
  818.     BEQ.S    .G1
  819.     CMP.L    #GADGET2,D0
  820.     BEQ.S    .G2
  821.     CMP.L    #GADGET3,D0
  822.     BEQ.S    .G3
  823.     CMP.L    #GADGET4,D0
  824.     BEQ.S    .G4
  825.     CMP.L    #GADGET5,D0
  826.     BEQ.S    .G5
  827.     CMP.L    #PTCHGADGET,D0
  828.     BEQ.W    REMPROT
  829.     MOVEQ.L    #-1,D0
  830.     RTS
  831.  
  832. .G5    MOVEQ.L    #5,D0
  833.     BRA.S    .GT0
  834.  
  835. .G4    MOVEQ.L    #4,D0
  836.     BRA.S    .GT0
  837.  
  838. .G3    MOVEQ.L    #3,D0
  839.     BRA.S    .GT0
  840.  
  841. .G2    MOVEQ.L    #2,D0
  842.     BRA.S    .GT0
  843.  
  844. .G1    MOVEQ.L    #1,D0
  845. .GT0
  846.     MOVEQ.L    #0,D2
  847.     MOVE.W    POSOFPROP(PC),D2
  848.     ADD.W    D0,D2
  849.     LEA.L    MEMORYBASE(PC),A3
  850.     BRA.S    .GT6
  851.  
  852. .GT4    MOVE.L    (A3),A3
  853. .GT6    DBF    D2,.GT4
  854.     MOVE.L    $4(A3),A3
  855.     MOVE.L    A3,PARAMTABBASE
  856.     MOVE.L    WIN1RASTPORT(PC),A1
  857.     MOVEQ.L    #0,D0
  858.     MOVE.L    GRABASE(PC),A6
  859.     JSR    _LVOSETAPEN(A6)
  860.     MOVE.L    WIN1RASTPORT(PC),A0
  861.     BCLR.B    #3,RP_FLAGS+1(A0)
  862.     MOVE.L    WIN1RASTPORT(PC),A1
  863.     MOVE.L    #26,D0
  864.     MOVE.L    #72,D1
  865.     MOVE.L    #448,D2
  866.     MOVE.L    #102,D3
  867.     MOVE.L    GRABASE(PC),A6
  868.     JSR    _LVORECTFILL(A6)
  869.     MOVE.L    WIN1RASTPORT(PC),A1
  870.     MOVE.L    #26,D0
  871.     MOVE.L    #114,D1
  872.     MOVE.L    #448,D2
  873.     MOVE.L    #134,D3
  874.     MOVE.L    GRABASE(PC),A6
  875.     JSR    _LVORECTFILL(A6)
  876.     MOVE.L    WIN1RASTPORT(PC),A1
  877.     MOVEQ.L    #1,D0
  878.     MOVE.L    GRABASE(PC),A6
  879.     JSR    _LVOSETAPEN(A6)
  880.     MOVE.L    WIN1RASTPORT(PC),A1
  881.     MOVE.L    #28,D0
  882.     MOVE.L    #79,D1
  883.     MOVE.L    GRABASE(PC),A6
  884.     JSR    _LVOMOVE(A6)
  885.  
  886.     MOVE.L    PARAMTABBASE(PC),A0
  887. .GT8    CMP.L    #PCH_NAME,(A0)+
  888.     BEQ.S    .GT7    
  889.     ADDQ.L    #4,A0
  890.     BRA.S    .GT8
  891.  
  892. .GT7    MOVE.L    (A0),A0
  893.     MOVE.L    A0,A1
  894. .GT9    TST.B    (A1)+
  895.     BNE.S    .GT9
  896.     MOVE.L    A1,D0
  897.     SUB.L    A0,D0
  898.     SUBQ.L    #1,D0
  899.     MOVE.L    WIN1RASTPORT(PC),A1
  900.     MOVE.L    GRABASE(PC),A6
  901.     JSR    _LVOTEXT(A6)
  902.     MOVE.L    WIN1RASTPORT(PC),A1
  903.     MOVE.L    #28,D0
  904.     MOVE.L    #89,D1
  905.     MOVE.L    GRABASE(PC),A6
  906.     JSR    _LVOMOVE(A6)
  907.  
  908.     MOVE.L    PARAMTABBASE(PC),A0
  909. .GT10    CMP.L    #PCH_ADAPTOR,(A0)+
  910.     BEQ.S    .GT11
  911.     ADDQ.L    #4,A0
  912.     TST.L    (A0)
  913.     BEQ.S    .GT17
  914.     BRA.S    .GT10
  915.  
  916. .GT11    MOVE.L    (A0),A0
  917.     MOVE.L    A0,A1
  918.     BRA.S    .GT15
  919.  
  920. .GT12    ADDQ.L    #1,A1
  921. .GT15    MOVE.B    (A1),D0
  922.     BEQ.S    .GT13
  923.     CMP.B    #$A,D0
  924.     BNE.S    .GT12
  925.     MOVE.L    A1,D0
  926.     SUB.L    A0,D0
  927.     MOVE.L    A1,A4
  928.     MOVE.L    WIN1RASTPORT(PC),A1
  929.     MOVE.L    GRABASE(PC),A6
  930.     JSR    _LVOTEXT(A6)
  931.     MOVE.L    WIN1RASTPORT(PC),A1
  932.     MOVE.L    #28,D0
  933.     MOVE.L    #99,D1
  934.     MOVE.L    GRABASE(PC),A6
  935.     JSR    _LVOMOVE(A6)
  936.  
  937.     ADDQ.L    #1,A4
  938.     MOVE.L    A4,A0
  939.     MOVE.L    A0,A1
  940.     BRA.S    .GT16
  941.  
  942. .GT14    ADDQ.L    #1,A1
  943. .GT16    MOVE.B    (A1),D0
  944.     BEQ.S    .GT13
  945.     CMP.B    #$A,D0
  946.     BNE.S    .GT14
  947. .GT13    MOVE.L    A1,D0
  948.     SUB.L    A0,D0
  949.     MOVE.L    WIN1RASTPORT(PC),A1
  950.     MOVE.L    GRABASE(PC),A6
  951.     JSR    _LVOTEXT(A6)
  952. .GT17    MOVE.L    WIN1RASTPORT(PC),A1
  953.     MOVE.L    #28,D0
  954.     MOVE.L    #121,D1
  955.     MOVE.L    GRABASE(PC),A6
  956.     JSR    _LVOMOVE(A6)
  957.     MOVE.L    #READYEND-READY,D0
  958.     MOVE.L    WIN1RASTPORT(PC),A1
  959.     LEA.L    READY(PC),A0
  960.     MOVE.L    GRABASE(PC),A6
  961.     JSR    _LVOTEXT(A6)
  962.     RTS
  963.  
  964. DRAWONEUP
  965.     MOVEQ.L    #0,D0
  966.     MOVEQ.L    #0,D1
  967.     MOVEQ.L    #0,D2
  968.     MOVE.W    POSOFPROP(PC),D2
  969.     MOVE.W    PARAMCOUNT(PC),D1
  970.     SUBQ.W    #5,D1
  971.     TST.W    D2
  972.     BEQ.W    .1
  973.     SUBQ.W    #1,D2
  974.     MOVE.W    D2,POSOFPROP
  975.     LEA.L    PROPINFO1(PC),A0
  976. ;    MOVE.W    PI_VPOTRES(A0),D0
  977.     MOVE.L    #$FFFF,D0
  978.     MULU.W    D2,D0
  979.     DIVU.W    D1,D0
  980.     MOVE.W    D0,PI_VERTPOT(A0)
  981.  
  982.     ADDQ.L    #1,D2
  983.     MOVE.L    D2,D0
  984.     BSR.W    GETPARPTR
  985.     MOVE.L    D0,T1PTR
  986.     ADDQ.L    #1,D2
  987.     MOVE.L    D2,D0
  988.     BSR.W    GETPARPTR
  989.     MOVE.L    D0,T2PTR
  990.     ADDQ.L    #1,D2
  991.     MOVE.L    D2,D0
  992.     BSR.W    GETPARPTR
  993.     MOVE.L    D0,T3PTR
  994.     ADDQ.L    #1,D2
  995.     MOVE.L    D2,D0
  996.     BSR.W    GETPARPTR
  997.     MOVE.L    D0,T4PTR
  998.     ADDQ.L    #1,D2
  999.     MOVE.L    D2,D0
  1000.     BSR.W    GETPARPTR
  1001.     MOVE.L    D0,T5PTR
  1002.  
  1003.     MOVE.L    WIN1RASTPORT(PC),A1
  1004.     MOVEQ.L    #0,D0
  1005.     MOVE.L    GRABASE(PC),A6
  1006.     JSR    _LVOSETAPEN(A6)
  1007.     MOVE.L    WIN1RASTPORT(PC),A0
  1008.     BCLR.B    #3,RP_FLAGS+1(A0)
  1009.     MOVE.L    WIN1RASTPORT(PC),A1
  1010.     MOVE.L    #26,D0
  1011.     MOVE.L    #9,D1
  1012.     MOVE.L    #429,D2
  1013.     MOVE.L    #60,D3
  1014.     MOVE.L    GRABASE(PC),A6
  1015.     JSR    _LVORECTFILL(A6)
  1016.  
  1017.     LEA.L    PROPGADGET1(PC),A0
  1018.     MOVE.L    WINDOW1(PC),A1
  1019.     LEA.L    0.W,A2
  1020.     MOVE.L    #6,D0
  1021.     MOVE.L    INTUIBASE(PC),A6
  1022.     JSR    _LVOREFRESHGLIST(A6)
  1023.  
  1024. .1    RTS
  1025.  
  1026. DRAWONEDOWN
  1027.     MOVEQ.L    #0,D0
  1028.     MOVEQ.L    #0,D1
  1029.     MOVEQ.L    #0,D2
  1030.     MOVE.W    POSOFPROP(PC),D2
  1031.     MOVE.W    PARAMCOUNT(PC),D1
  1032.     SUBQ.W    #5,D1
  1033.     CMP.W    D1,D2
  1034.     BHS.W    .1
  1035.     ADDQ.W    #1,D2
  1036.     MOVE.W    D2,POSOFPROP
  1037.     LEA.L    PROPINFO1(PC),A0
  1038. ;    MOVE.W    PI_VPOTRES(A0),D0
  1039.     MOVE.L    #$FFFF,D0
  1040.     MULU.W    D2,D0
  1041.     DIVU.W    D1,D0
  1042.     MOVE.W    D0,PI_VERTPOT(A0)
  1043.  
  1044.     ADDQ.L    #1,D2
  1045.     MOVE.L    D2,D0
  1046.     BSR.W    GETPARPTR
  1047.     MOVE.L    D0,T1PTR
  1048.     ADDQ.L    #1,D2
  1049.     MOVE.L    D2,D0
  1050.     BSR.W    GETPARPTR
  1051.     MOVE.L    D0,T2PTR
  1052.     ADDQ.L    #1,D2
  1053.     MOVE.L    D2,D0
  1054.     BSR.W    GETPARPTR
  1055.     MOVE.L    D0,T3PTR
  1056.     ADDQ.L    #1,D2
  1057.     MOVE.L    D2,D0
  1058.     BSR.W    GETPARPTR
  1059.     MOVE.L    D0,T4PTR
  1060.     ADDQ.L    #1,D2
  1061.     MOVE.L    D2,D0
  1062.     BSR.W    GETPARPTR
  1063.     MOVE.L    D0,T5PTR
  1064.  
  1065.     MOVE.L    WIN1RASTPORT(PC),A1
  1066.     MOVEQ.L    #0,D0
  1067.     MOVE.L    GRABASE(PC),A6
  1068.     JSR    _LVOSETAPEN(A6)
  1069.     MOVE.L    WIN1RASTPORT(PC),A0
  1070.     BCLR.B    #3,RP_FLAGS+1(A0)
  1071.     MOVE.L    WIN1RASTPORT(PC),A1
  1072.     MOVE.L    #26,D0
  1073.     MOVE.L    #9,D1
  1074.     MOVE.L    #429,D2
  1075.     MOVE.L    #60,D3
  1076.     MOVE.L    GRABASE(PC),A6
  1077.     JSR    _LVORECTFILL(A6)
  1078.  
  1079.     LEA.L    PROPGADGET1(PC),A0
  1080.     MOVE.L    WINDOW1(PC),A1
  1081.     LEA.L    0.W,A2
  1082.     MOVE.L    #6,D0
  1083.     MOVE.L    INTUIBASE(PC),A6
  1084.     JSR    _LVOREFRESHGLIST(A6)
  1085.  
  1086. .1    RTS
  1087.  
  1088. DRAWPARS
  1089.     MOVEQ.L    #$0,D1
  1090.     MOVEQ.L    #0,D2
  1091.     LEA.L    PROPINFO1(PC),A0
  1092. ;    MOVE.W    PI_VPOTRES(A0),D1
  1093.     MOVE.W    PARAMCOUNT(PC),D2
  1094.     SUBQ.W    #5,D2
  1095.     MOVE.L    #$FFFF,D1
  1096.     DIVU.W    D2,D1
  1097.  
  1098.     LEA.L    PROPINFO1(PC),A0
  1099.     MOVE.W    PI_VERTPOT(A0),D2
  1100.     DIVU.W    D1,D2
  1101.     AND.L    #$FFFF,D2
  1102. .GT18    MOVE.L    D2,D1
  1103.     ADDQ.W    #5,D1
  1104.     CMP.W    PARAMCOUNT(PC),D1
  1105.     BLS.S    .GT3
  1106.     TST.W    D2
  1107.     BEQ.S    .GT3
  1108.     SUBQ.W    #1,D2
  1109.     BRA.S    .GT18
  1110.  
  1111. .GT3
  1112.     MOVE.W    D2,POSOFPROP
  1113.     ADDQ.L    #1,D2
  1114.     MOVE.L    D2,D0
  1115.     BSR.W    GETPARPTR
  1116.     MOVE.L    D0,T1PTR
  1117.     ADDQ.L    #1,D2
  1118.     MOVE.L    D2,D0
  1119.     BSR.W    GETPARPTR
  1120.     MOVE.L    D0,T2PTR
  1121.     ADDQ.L    #1,D2
  1122.     MOVE.L    D2,D0
  1123.     BSR.W    GETPARPTR
  1124.     MOVE.L    D0,T3PTR
  1125.     ADDQ.L    #1,D2
  1126.     MOVE.L    D2,D0
  1127.     BSR.W    GETPARPTR
  1128.     MOVE.L    D0,T4PTR
  1129.     ADDQ.L    #1,D2
  1130.     MOVE.L    D2,D0
  1131.     BSR.W    GETPARPTR
  1132.     MOVE.L    D0,T5PTR
  1133.  
  1134.     MOVE.L    WIN1RASTPORT(PC),A1
  1135.     MOVEQ.L    #0,D0
  1136.     MOVE.L    GRABASE(PC),A6
  1137.     JSR    _LVOSETAPEN(A6)
  1138.     MOVE.L    WIN1RASTPORT(PC),A0
  1139.     BCLR.B    #3,RP_FLAGS+1(A0)
  1140.     MOVE.L    WIN1RASTPORT(PC),A1
  1141.     MOVE.L    #26,D0
  1142.     MOVE.L    #9,D1
  1143.     MOVE.L    #429,D2
  1144.     MOVE.L    #60,D3
  1145.     MOVE.L    GRABASE(PC),A6
  1146.     JSR    _LVORECTFILL(A6)
  1147.  
  1148.     LEA.L    GADGET1(PC),A0
  1149.     MOVE.L    WINDOW1(PC),A1
  1150.     LEA.L    0.W,A2
  1151.     MOVE.L    #5,D0
  1152.     MOVE.L    INTUIBASE(PC),A6
  1153.     JSR    _LVOREFRESHGLIST(A6)
  1154.     RTS
  1155.  
  1156. REMPROT    TST.L    PARAMTABBASE(A5)
  1157.     BNE.S    .16
  1158.  
  1159.     MOVE.L    WIN1RASTPORT(PC),A1
  1160.     MOVEQ.L    #0,D0
  1161.     MOVE.L    GRABASE(PC),A6
  1162.     JSR    _LVOSETAPEN(A6)
  1163.     MOVE.L    WIN1RASTPORT(PC),A0
  1164.     BCLR.B    #3,RP_FLAGS+1(A0)
  1165.     MOVE.L    WIN1RASTPORT(PC),A1
  1166.     MOVE.L    #26,D0
  1167.     MOVE.L    #72,D1
  1168.     MOVE.L    #448,D2
  1169.     MOVE.L    #82,D3
  1170.     MOVE.L    GRABASE(PC),A6
  1171.     JSR    _LVORECTFILL(A6)
  1172.  
  1173.     MOVE.L    WIN1RASTPORT(PC),A1
  1174.     MOVEQ.L    #1,D0
  1175.     MOVE.L    GRABASE(PC),A6
  1176.     JSR    _LVOSETAPEN(A6)
  1177.     MOVE.L    WIN1RASTPORT(PC),A1
  1178.     MOVE.L    #28,D0
  1179.     MOVE.L    #79,D1
  1180.     MOVE.L    GRABASE(PC),A6
  1181.     JSR    _LVOMOVE(A6)
  1182.     MOVE.L    #NOSELECT2END-NOSELECT2,D0
  1183.     MOVE.L    WIN1RASTPORT(PC),A1
  1184.     LEA.L    NOSELECT2(PC),A0
  1185.     MOVE.L    GRABASE(PC),A6
  1186.     JSR    _LVOTEXT(A6)
  1187.     RTS
  1188.  
  1189. .16    LEA.L    SPECIALSPACE,A0
  1190.     MOVE.L    #$C000/4-1,D0
  1191. .I1    CLR.L    (A0)+
  1192.     DBF    D0,.I1
  1193.  
  1194.     MOVE.L    PARAMTABBASE(PC),A0
  1195. .1    CMP.L    #PCH_INIT,(A0)+
  1196.     BEQ.S    .2
  1197.     ADDQ.L    #4,A0
  1198.     TST.L    (A0)
  1199.     BEQ.S    .3
  1200.     BRA.S    .1
  1201.  
  1202. .2    MOVE.L    (A0),A0
  1203.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1204.     JSR    (A0)
  1205.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1206.     TST.L    D0
  1207.     BNE.W    .ERRINPARM
  1208.  
  1209. .3    MOVE.L    PARAMTABBASE(PC),A0
  1210. .4    CMP.L    #PCH_FILECOUNT,(A0)+
  1211.     BEQ.S    .5
  1212.     ADDQ.L    #4,A0
  1213.     TST.L    (A0)
  1214.     BEQ.W    .ERRINSTRUCT
  1215.     BRA.S    .4
  1216.  
  1217. .5    MOVEQ.L    #-1,D6
  1218.     MOVE.L    (A0),D7
  1219. .6    ADDQ.L    #1,D6
  1220.     CMP.L    D6,D7
  1221.     BHI.W    .18
  1222.     MOVE.L    WIN1RASTPORT(PC),A1
  1223.     MOVEQ.L    #0,D0
  1224.     MOVE.L    GRABASE(PC),A6
  1225.     JSR    _LVOSETAPEN(A6)
  1226.     MOVE.L    WIN1RASTPORT(PC),A1
  1227.     MOVE.L    #26,D0
  1228.     MOVE.L    #114,D1
  1229.     MOVE.L    #448,D2
  1230.     MOVE.L    #134,D3
  1231.     MOVE.L    GRABASE(PC),A6
  1232.     JSR    _LVORECTFILL(A6)
  1233.     MOVE.L    WIN1RASTPORT(PC),A1
  1234.     MOVEQ.L    #1,D0
  1235.     MOVE.L    GRABASE(PC),A6
  1236.     JSR    _LVOSETAPEN(A6)
  1237.     MOVE.L    WIN1RASTPORT(PC),A1
  1238.     MOVE.L    #28,D0
  1239.     MOVE.L    #121,D1
  1240.     MOVE.L    GRABASE(PC),A6
  1241.     JSR    _LVOMOVE(A6)
  1242.     MOVE.L    #OPERFINIEND-OPERFINI,D0
  1243.     MOVE.L    WIN1RASTPORT(PC),A1
  1244.     LEA.L    OPERFINI(PC),A0
  1245.     MOVE.L    GRABASE(PC),A6
  1246.     JSR    _LVOTEXT(A6)
  1247.  
  1248.     MOVE.L    PARAMTABBASE(PC),A0
  1249. .F1    CMP.L    #PCH_FINISH,(A0)+
  1250.     BEQ.S    .F2
  1251.     ADDQ.L    #4,A0
  1252.     TST.L    (A0)
  1253.     BEQ.S    .F3
  1254.     BRA.S    .F1
  1255.  
  1256. .F2    TST.L    (A0)
  1257.     BEQ.S    .F3
  1258.     MOVE.L    (A0),A0
  1259.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1260.     JSR    (A0)
  1261.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1262.  
  1263. .F3    BRA.W    .E3
  1264.  
  1265. ;----------------------------------------------------------------------
  1266.  
  1267. .ERRINLENGTH
  1268.  
  1269.     MOVE.L    #ERRORGAMEEND-ERRORGAME,D7
  1270.     MOVE.L    #ERRORGAME,D6
  1271.     MOVE.L    #ERRORLENGTHEND-ERRORLENGTH,D5
  1272.     MOVE.L    #ERRORLENGTH,D4
  1273.     BRA.S    .ERR
  1274.  
  1275. .ERRINSTRUCT
  1276.     MOVEQ.L    #0,D6
  1277.     MOVE.L    #ERRORINSTRUCTEND-ERRORINSTRUCT,D5
  1278.     MOVE.L    #ERRORINSTRUCT,D4
  1279.     BRA.S    .ERR
  1280.  
  1281. .ERRINPARM
  1282.     MOVEQ.L    #0,D6
  1283.     MOVE.L    #ERRORINPARMEND-ERRORINPARM,D5
  1284.     MOVE.L    #ERRORINPARM,D4
  1285.  
  1286. .ERR    MOVE.L    WIN1RASTPORT(PC),A1
  1287.     MOVEQ.L    #0,D0
  1288.     MOVE.L    GRABASE(PC),A6
  1289.     JSR    _LVOSETAPEN(A6)
  1290.     MOVE.L    WIN1RASTPORT(PC),A1
  1291.     MOVE.L    #26,D0
  1292.     MOVE.L    #114,D1
  1293.     MOVE.L    #448,D2
  1294.     MOVE.L    #134,D3
  1295.     MOVE.L    GRABASE(PC),A6
  1296.     JSR    _LVORECTFILL(A6)
  1297.     MOVE.L    WIN1RASTPORT(PC),A1
  1298.     MOVEQ.L    #1,D0
  1299.     MOVE.L    GRABASE(PC),A6
  1300.     JSR    _LVOSETAPEN(A6)
  1301.     MOVE.L    WIN1RASTPORT(PC),A1
  1302.     MOVE.L    #28,D0
  1303.     MOVE.L    #121,D1
  1304.     MOVE.L    GRABASE(PC),A6
  1305.     JSR    _LVOMOVE(A6)
  1306.     MOVE.L    D5,D0
  1307.     MOVE.L    WIN1RASTPORT(PC),A1
  1308.     MOVE.L    D4,A0
  1309.     MOVE.L    GRABASE(PC),A6
  1310.     JSR    _LVOTEXT(A6)
  1311.  
  1312.     TST.L    D6
  1313.     BEQ.S    .E9
  1314.  
  1315.     MOVE.L    WIN1RASTPORT(PC),A1
  1316.     MOVE.L    #28,D0
  1317.     MOVE.L    #131,D1
  1318.     MOVE.L    GRABASE(PC),A6
  1319.     JSR    _LVOMOVE(A6)
  1320.     MOVE.L    D7,D0
  1321.     MOVE.L    WIN1RASTPORT(PC),A1
  1322.     MOVE.L    D6,A0
  1323.     MOVE.L    GRABASE(PC),A6
  1324.     JSR    _LVOTEXT(A6)
  1325.  
  1326. .E9    MOVE.L    PARAMTABBASE(PC),A0
  1327. .E1    CMP.L    #PCH_ERRORINPARAMETER,(A0)+
  1328.     BEQ.S    .E2
  1329.     ADDQ.L    #4,A0
  1330.     TST.L    (A0)
  1331.     BEQ.S    .E3
  1332.     BRA.S    .E1
  1333.  
  1334. .E2    TST.L    (A0)
  1335.     BEQ.S    .E3
  1336.     MOVE.L    (A0),A0
  1337.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1338.     JSR    (A0)
  1339.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1340.  
  1341. .E3    TST.L    FILEMEMADR(A5)
  1342.     BEQ.S    .ER
  1343.     MOVE.L    FILEMEMADR(PC),A1
  1344.     MOVE.L    FILSIZE(PC),D0
  1345.     ADDQ.L    #7,D0
  1346.     AND.L    #$FFFFFFF8,D0
  1347.     MOVE.L    (_SYSBASE).W,A6
  1348.     JSR    _LVOFREEMEM(A6)
  1349.     CLR.L    FILEMEMADR(A5)
  1350.     CLR.L    FILSIZE(A5)
  1351. .ER
  1352.     TST.L    DEVICESOURCEPTR(A5)
  1353.     BEQ.S    .E4
  1354.     MOVE.L    DEVICESOURCEPTR(PC),A1
  1355.     MOVE.L    4.W,A6
  1356.     JSR    _LVOCLOSEDEVICE(A6)
  1357.     CLR.L    DEVICESOURCEPTR(A5)
  1358.  
  1359. .E4    TST.L    DEVICEDESTPTR(A5)
  1360.     BEQ.S    .E5
  1361.     MOVE.L    DEVICEDESTPTR(PC),A1
  1362.     MOVE.L    4.W,A6
  1363.     JSR    _LVOCLOSEDEVICE(A6)
  1364.     CLR.L    DEVICEDESTPTR(A5)
  1365.     
  1366. .E5    RTS
  1367.  
  1368. ;-------------------------------------------------------------------------
  1369.  
  1370. .18    CLR.L    FILEMEMADR(A5)
  1371.     MOVE.L    WIN1RASTPORT(PC),A1
  1372.     MOVEQ.L    #0,D0
  1373.     MOVE.L    GRABASE(PC),A6
  1374.     JSR    _LVOSETAPEN(A6)
  1375.     MOVE.L    WIN1RASTPORT(PC),A1
  1376.     MOVE.L    #26,D0
  1377.     MOVE.L    #114,D1
  1378.     MOVE.L    #448,D2
  1379.     MOVE.L    #134,D3
  1380.     MOVE.L    GRABASE(PC),A6
  1381.     JSR    _LVORECTFILL(A6)
  1382.  
  1383.     MOVE.L    WIN1RASTPORT(PC),A1
  1384.     MOVE.L    #28,D0
  1385.     MOVE.L    #121,D1
  1386.     MOVE.L    GRABASE(PC),A6
  1387.     JSR    _LVOMOVE(A6)
  1388.     MOVE.L    WIN1RASTPORT(PC),A1
  1389.     MOVEQ.L    #1,D0
  1390.     MOVE.L    GRABASE(PC),A6
  1391.     JSR    _LVOSETAPEN(A6)
  1392.     MOVE.L    PARAMTABBASE(PC),A0
  1393. .7    CMP.L    #PCH_STATE,(A0)+
  1394.     BEQ.S    .8
  1395.     ADDQ.L    #4,A0
  1396.     TST.L    (A0)
  1397.     BEQ.S    .9
  1398.     BRA.S    .7
  1399.  
  1400. .8    MOVE.L    (A0),A0
  1401.     MOVE.L    D6,D0
  1402.     LSL.L    #2,D0
  1403.     TST.L    (A0,D0.L)
  1404.     BEQ.S    .9
  1405.     MOVE.L    (A0,D0.L),A0
  1406.     MOVE.L    A0,A1
  1407.     BRA.S    .10
  1408.  
  1409. .11    ADDQ.L    #1,A1
  1410. .10    MOVE.B    (A1),D0
  1411.     BEQ.S    .12
  1412.     CMP.B    #$A,D0
  1413.     BNE.S    .11
  1414.     MOVE.L    A1,D0
  1415.     SUB.L    A0,D0
  1416.     MOVE.L    A1,A4
  1417.     MOVE.L    WIN1RASTPORT(PC),A1
  1418.     MOVE.L    GRABASE(PC),A6
  1419.     JSR    _LVOTEXT(A6)
  1420.     MOVE.L    WIN1RASTPORT(PC),A1
  1421.     MOVE.L    #28,D0
  1422.     MOVE.L    #131,D1
  1423.     MOVE.L    GRABASE(PC),A6
  1424.     JSR    _LVOMOVE(A6)
  1425.     ADDQ.L    #1,A4
  1426.     MOVE.L    A4,A0
  1427.     MOVE.L    A0,A1
  1428.     BRA.S    .14
  1429.  
  1430. .13    ADDQ.L    #1,A1
  1431. .14    MOVE.B    (A1),D0
  1432.     BEQ.S    .12
  1433.     CMP.B    #$A,D0
  1434.     BNE.S    .13
  1435. .12    MOVE.L    A1,D0
  1436.     SUB.L    A0,D0
  1437.     MOVE.L    WIN1RASTPORT(PC),A1
  1438.     MOVE.L    GRABASE(PC),A6
  1439.     JSR    _LVOTEXT(A6)
  1440.     BRA.S    .15
  1441.  
  1442. .9    MOVE.L    #INSCOPYEND-INSCOPY,D0
  1443.     MOVE.L    WIN1RASTPORT(PC),A1
  1444.     LEA.L    INSCOPY(PC),A0
  1445.     MOVE.L    GRABASE(PC),A6
  1446.     JSR    _LVOTEXT(A6)
  1447.     MOVE.L    WIN1RASTPORT(PC),A1
  1448.     MOVE.L    #28,D0
  1449.     MOVE.L    #131,D1
  1450.     MOVE.L    GRABASE(PC),A6
  1451.     JSR    _LVOMOVE(A6)
  1452.     MOVE.L    #WAITPROCEND-WAITPROC,D0
  1453.     MOVE.L    WIN1RASTPORT(PC),A1
  1454.     LEA.L    WAITPROC(PC),A0
  1455.     MOVE.L    GRABASE(PC),A6
  1456.     JSR    _LVOTEXT(A6)
  1457. .15    
  1458.     MOVE.L    PARAMTABBASE(PC),A0
  1459. .21    CMP.L    #PCH_DISKNAME,(A0)+
  1460.     BEQ.S    .17
  1461.     ADDQ.L    #4,A0
  1462.     TST.L    (A0)
  1463.     BEQ.S    .19
  1464.     BRA.S    .21
  1465.  
  1466. .17    MOVE.L    (A0),A0
  1467.     MOVE.L    D6,D0
  1468.     LSL.L    #2,D0
  1469.     TST.L    (A0,D0.L)
  1470.     BEQ.W    .19
  1471.     MOVE.L    (A0,D0.L),A0
  1472.     LEA.L    LOCKDISK(PC),A2
  1473.     LEA.L    FILNAME(PC),A1
  1474. .20    MOVE.B    (A0),(A2)+
  1475.     MOVE.B    (A0)+,(A1)+
  1476.     BNE.S    .20
  1477.     MOVE.B    #':',-1(A1)
  1478.     MOVE.B    #':',-1(A2)
  1479.     CLR.B    (A1)
  1480.     CLR.B    (A2)
  1481.     MOVE.L    A1,STRFILNAME(A5)
  1482.     LEA.L    LOCKDISK(PC),A1
  1483.     MOVE.L    A1,D1
  1484.     MOVE.L    #MODE_READWRITE,D2
  1485.     MOVE.L    DOSBAS(PC),A6
  1486.     JSR    _LVOLOCK(A6)
  1487.     TST.L    D0
  1488.     BEQ.W    .ERRINPARM
  1489.  
  1490.     MOVE.L    D0,D1
  1491.     MOVE.L    DOSBAS(PC),A6
  1492.     JSR    _LVOUNLOCK(A6)
  1493.     CLR.L    PARAMLOCK
  1494. .19
  1495. ;MANUELLER DISKCHECK
  1496.     MOVE.L    PARAMTABBASE(PC),A0
  1497. .35    CMP.L    #PCH_CHECKDISK,(A0)+
  1498.     BEQ.S    .36
  1499.     ADDQ.L    #4,A0
  1500.     TST.L    (A0)
  1501.     BEQ.W    .37
  1502.     BRA.S    .35
  1503.  
  1504. .36    MOVE.L    (A0),A0
  1505.     MOVE.L    D6,D0
  1506.     LSL.L    #2,D0
  1507.     TST.L    (A0,D0.L)
  1508.     BEQ.S    .37
  1509.     MOVE.L    (A0,D0.L),A0
  1510.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1511.     JSR    (A0)
  1512.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1513.     TST.L    D0
  1514.     BNE.W    .ERRINPARM
  1515. .37
  1516.     CLR.B    FILENAMEGIVEN(A5)
  1517.     MOVE.L    PARAMTABBASE(PC),A0
  1518. .22    CMP.L    #PCH_FILENAME,(A0)+
  1519.     BEQ.S    .23
  1520.     ADDQ.L    #4,A0
  1521.     TST.L    (A0)
  1522.     BEQ.W    .24
  1523.     BRA.S    .22
  1524.  
  1525. .23    MOVE.L    (A0),A0
  1526.     MOVE.L    D6,D0
  1527.     LSL.L    #2,D0
  1528.     TST.L    (A0,D0.L)
  1529.     BEQ.W    .24
  1530.     MOVE.L    (A0,D0.L),A0
  1531.     MOVE.L    STRFILNAME(PC),A1
  1532. .25    MOVE.B    (A0)+,(A1)+
  1533.     BNE.S    .25
  1534.     ST.B    FILENAMEGIVEN(A5)
  1535. .24
  1536.     MOVE.L    PARAMTABBASE(PC),A0
  1537. .38    CMP.L    #PCH_SPECIAL,(A0)+
  1538.     BEQ.S    .39
  1539.     ADDQ.L    #4,A0
  1540.     TST.L    (A0)
  1541.     BEQ.W    .40
  1542.     BRA.S    .38
  1543.  
  1544. .39    MOVE.L    (A0),A0
  1545.     MOVE.L    D6,D0
  1546.     LSL.L    #2,D0
  1547.     TST.L    (A0,D0.L)
  1548.     BEQ.W    .40
  1549.     MOVE.L    (A0,D0.L),A2
  1550.  
  1551.     MOVE.L    PARAMTABBASE(PC),A0
  1552. .41    CMP.L    #PCH_DATALENGTH,(A0)+
  1553.     BEQ.S    .42
  1554.     ADDQ.L    #4,A0
  1555.     TST.L    (A0)
  1556.     BEQ.W    .ERRINSTRUCT
  1557.     BRA.S    .41
  1558.  
  1559. .42    MOVE.L    (A0),A0
  1560.     MOVE.L    D6,D0
  1561.     LSL.L    #2,D0
  1562.     TST.L    (A0,D0.L)
  1563.     BEQ.W    .ERRINSTRUCT
  1564.     MOVE.L    (A0,D0.L),D0
  1565.     MOVE.L    D0,FILSIZE(A5)
  1566.     ADDQ.L    #7,D0
  1567.     AND.L    #$FFFFFFF8,D0
  1568.     MOVE.L    #MEMF_CLEAR,D1
  1569.     MOVE.L    (_SYSBASE).W,A6
  1570.     JSR    _LVOALLOCMEM(A6)
  1571.     TST.L    D0
  1572.     BEQ.W    .ERRINPARM
  1573.     MOVE.L    D0,FILEMEMADR(A5)    
  1574.  
  1575.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1576.     JSR    (A2)
  1577.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1578.     TST.L    D0
  1579.     BNE.W    .ERRINPARM
  1580.  
  1581.     MOVE.L    PARAMTABBASE(PC),A0
  1582. .43    CMP.L    #PCH_STATE2,(A0)+
  1583.     BEQ.S    .44
  1584.     ADDQ.L    #4,A0
  1585.     TST.L    (A0)
  1586.     BEQ.W    .45
  1587.     BRA.S    .43
  1588.  
  1589. .44    MOVE.L    (A0),A0
  1590.     MOVE.L    D6,D0
  1591.     LSL.L    #2,D0
  1592.     TST.L    (A0,D0.L)
  1593.     BEQ.W    .45
  1594.     MOVE.L    (A0,D0.L),A0
  1595.     MOVE.L    A0,-(A7)
  1596.     MOVE.L    WIN1RASTPORT(PC),A1
  1597.     MOVEQ.L    #0,D0
  1598.     MOVE.L    GRABASE(PC),A6
  1599.     JSR    _LVOSETAPEN(A6)
  1600.     MOVE.L    WIN1RASTPORT(PC),A1
  1601.     MOVE.L    #26,D0
  1602.     MOVE.L    #114,D1
  1603.     MOVE.L    #448,D2
  1604.     MOVE.L    #134,D3
  1605.     MOVE.L    GRABASE(PC),A6
  1606.     JSR    _LVORECTFILL(A6)
  1607.     MOVE.L    WIN1RASTPORT(PC),A1
  1608.     MOVEQ.L    #1,D0
  1609.     MOVE.L    GRABASE(PC),A6
  1610.     JSR    _LVOSETAPEN(A6)
  1611.     MOVE.L    WIN1RASTPORT(PC),A1
  1612.     MOVE.L    #28,D0
  1613.     MOVE.L    #121,D1
  1614.     MOVE.L    GRABASE(PC),A6
  1615.     JSR    _LVOMOVE(A6)
  1616.     MOVE.L    (A7)+,A1
  1617.     MOVE.L    A1,A0
  1618.     BRA.S    .46
  1619.  
  1620. .47    ADDQ.L    #1,A1
  1621. .46    MOVE.B    (A1),D0
  1622.     BEQ.S    .48
  1623.     CMP.B    #$A,D0
  1624.     BNE.S    .47
  1625.     MOVE.L    A1,D0
  1626.     SUB.L    A0,D0
  1627.     MOVE.L    A1,A4
  1628.     MOVE.L    WIN1RASTPORT(PC),A1
  1629.     MOVE.L    GRABASE(PC),A6
  1630.     JSR    _LVOTEXT(A6)
  1631.     MOVE.L    WIN1RASTPORT(PC),A1
  1632.     MOVE.L    #28,D0
  1633.     MOVE.L    #131,D1
  1634.     MOVE.L    GRABASE(PC),A6
  1635.     JSR    _LVOMOVE(A6)
  1636.     ADDQ.L    #1,A4
  1637.     MOVE.L    A4,A0
  1638.     MOVE.L    A0,A1
  1639.     BRA.S    .49
  1640.  
  1641. .50    ADDQ.L    #1,A1
  1642. .49    MOVE.B    (A1),D0
  1643.     BEQ.S    .48
  1644.     CMP.B    #$A,D0
  1645.     BNE.S    .50
  1646. .48    MOVE.L    A1,D0
  1647.     SUB.L    A0,D0
  1648.     MOVE.L    WIN1RASTPORT(PC),A1
  1649.     MOVE.L    GRABASE(PC),A6
  1650.     JSR    _LVOTEXT(A6)
  1651.  
  1652. .45
  1653.     MOVE.L    PARAMTABBASE(PC),A0
  1654. .51    CMP.L    #PCH_PROCESSING,(A0)+
  1655.     BEQ.S    .52
  1656.     ADDQ.L    #4,A0
  1657.     TST.L    (A0)
  1658.     BEQ.S    .53
  1659.     BRA.S    .51
  1660.  
  1661. .52    MOVE.L    (A0),A0
  1662.     MOVE.L    D6,D0
  1663.     LSL.L    #2,D0
  1664.     TST.L    (A0,D0.L)
  1665.     BEQ.S    .53
  1666.     MOVE.L    (A0,D0.L),A0
  1667.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1668.     JSR    (A0)
  1669.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1670.     TST.L    D0
  1671.     BNE.W    .ERRINPARM
  1672. .53    
  1673.     MOVE.L    PARAMTABBASE(PC),A0
  1674. .54    CMP.L    #PCH_CHANGES,(A0)+
  1675.     BEQ.S    .55
  1676.     ADDQ.L    #4,A0
  1677.     TST.L    (A0)
  1678.     BEQ.S    .56
  1679.     BRA.S    .54
  1680.  
  1681. .55    MOVE.L    (A0),A0
  1682.     MOVE.L    D6,D0
  1683.     LSL.L    #2,D0
  1684.     TST.L    (A0,D0.L)
  1685.     BEQ.S    .56
  1686.     MOVE.L    (A0,D0.L),A1
  1687.     BSR.W    MODIFY
  1688.     TST.L    D0
  1689.     BNE.W    .ERRINPARM
  1690.  
  1691. .56    
  1692.     MOVE.L    PARAMTABBASE(PC),A0
  1693. .D29    CMP.L    #PCH_SAVEPGM,(A0)+
  1694.     BEQ.S    .D30
  1695.     ADDQ.L    #4,A0
  1696.     TST.L    (A0)
  1697.     BEQ.S    .D31
  1698.     BRA.S    .D29
  1699.  
  1700. .D30    MOVE.L    (A0),A0
  1701.     MOVE.L    D6,D0
  1702.     LSL.L    #2,D0
  1703.     TST.L    (A0,D0.L)
  1704.     BEQ.S    .D31
  1705.     MOVE.L    (A0,D0.L),A0
  1706.     MOVEM.L    D2-D7/A2-A6,-(A7)
  1707.     JSR    (A0)
  1708.     MOVEM.L    (A7)+,D2-D7/A2-A6
  1709.     TST.L    D0
  1710.     BNE.W    .ERRINPARM
  1711. .D31
  1712.     BRA.W    .33
  1713.  
  1714. .40
  1715. ;CHECK IF BOOTBLOCK IS TO WRITE
  1716.     MOVE.L    PARAMTABBASE(PC),A0
  1717. .59    CMP.L    #PCH_BOOTBLOCK,(A0)+
  1718.     BEQ.S    .60
  1719.     ADDQ.L    #4,A0
  1720.     TST.L    (A0)
  1721.     BEQ.W    .61
  1722.     BRA.S    .59
  1723.  
  1724. .60    MOVE.L    (A0),A0
  1725.     MOVE.L    D6,D0
  1726.     LSL.L    #2,D0
  1727.     TST.L    (A0,D0.L)
  1728.     BEQ.W    .61
  1729.     MOVE.L    (A0,D0.L),A2
  1730.  
  1731. .62
  1732.     LEA.L    LOCKDISK(PC),A1
  1733.     MOVE.L    A1,D1
  1734.     MOVE.L    #MODE_READWRITE,D2
  1735.     MOVE.L    DOSBAS(PC),A6
  1736.     JSR    _LVOLOCK(A6)
  1737.     TST.L    D0
  1738.     BEQ.W    .ERRINPARM
  1739.     MOVE.L    D0,D5
  1740.     MOVE.L    D0,D1
  1741.     MOVE.L    #INFODAT,D2
  1742.     JSR    _LVOINFO(A6)
  1743.     TST.L    D0
  1744.     BEQ.W    .ERRINPARM
  1745. ;OPEN DEVICE 
  1746. ;UNITNUMBER IS IN ID_UNITNUMBER OF INFODAT
  1747.  
  1748.     SUB.L    A4,A4
  1749.     MOVE.L    DOSBAS(PC),D0
  1750.     MOVE.L    DL_ROOT(A4,D0.L),D0
  1751.     MOVE.L    RN_INFO(A4,D0.L),D0
  1752.     LSL.L    #2,D0
  1753.     MOVE.L    DI_DEVINFO(A4,D0.L),D0
  1754.     LSL.L    #2,D0
  1755.     MOVE.L    D0,D4
  1756.     BRA.S    .B1
  1757.  
  1758. .B2    MOVE.L    DN_NEXT(A4,D0.L),D0
  1759.     BEQ.W    .ERRINPARM
  1760.     LSL.L    #2,D0
  1761. .B1    MOVE.L    DN_TYPE(A4,D0.L),D1
  1762.     CMP.L    #2,D1
  1763.     BNE.S    .B2
  1764.     MOVE.L    DN_NAME(A4,D0.L),D1
  1765.     LSL.L    #2,D1
  1766.     ADDQ.L    #1,D1
  1767.     MOVE.L    D1,A1
  1768.     LEA.L    LOCKDISK(PC),A0
  1769. .B3    CMPM.B    (A0)+,(A1)+
  1770.     BEQ.S    .B3
  1771.     CMP.B    #':',-1(A0)
  1772.     BNE.S    .B1
  1773.     TST.B    -1(A1)
  1774.     BNE.S    .B1
  1775.     MOVE.L    DN_TASK(A4,D0.L),D0
  1776.     EXG.L    D0,D4
  1777.     BRA.S    .B4
  1778.  
  1779. .B5    MOVE.L    DN_NEXT(A4,D0.L),D0
  1780.     BEQ.W    .ERRINPARM
  1781.     LSL.L    #2,D0
  1782. .B4    MOVE.L    DN_TYPE(A4,D0.L),D1
  1783.     CMP.L    #0,D1
  1784.     BNE.S    .B5
  1785.     CMP.L    DN_TASK(A4,D0.L),D4
  1786.     BNE.S    .B5
  1787.     MOVE.L    DN_STARTUP(A4,D0.L),D0
  1788.     LSL.L    #2,D0
  1789.     MOVE.L    FSSM_DEVICE(A4,D0.L),D1
  1790.     LSL.L    #2,D1
  1791.     ADDQ.L    #1,D1
  1792.     MOVE.L    D1,A0
  1793.     MOVE.L    BOOTIORQ(PC),A1
  1794.     MOVE.L    FSSM_UNIT(A4,D0.L),D0
  1795.     MOVEQ.L    #0,D1
  1796.     MOVE.L    4.W,A6
  1797.     JSR    _LVOOPENDEVICE(A6)
  1798.     TST.L    D0
  1799.     BNE.W    .ERRINPARM
  1800.     MOVE.L    BOOTIORQ(PC),A1
  1801.     MOVE.W    #CMD_WRITE,IO_COMMAND(A1)
  1802.     MOVE.L    A2,IO_DATA(A1)
  1803.     MOVE.L    #$400,IO_LENGTH(A1)
  1804.     MOVE.L    #$0,IO_OFFSET(A1)
  1805.     JSR    _LVODOIO(A6)
  1806.     MOVE.L    D0,-(A7)
  1807.     MOVE.L    BOOTIORQ(PC),A1
  1808.     JSR    _LVOCLOSEDEVICE(A6)
  1809.     MOVE.L    D5,D1
  1810.     MOVE.L    DOSBAS(PC),A6
  1811.     JSR    _LVOUNLOCK(A6)
  1812.     CLR.L    PARAMLOCK
  1813.  
  1814.     MOVE.L    (A7)+,D0
  1815.     TST.L    D0
  1816.     BNE.W    .ERRINPARM
  1817.     BRA.W    .6
  1818.  
  1819.  
  1820. .61
  1821.     MOVE.L    PARAMTABBASE(PC),A0
  1822. .64    CMP.L    #PCH_SAVEDATA,(A0)+
  1823.     BEQ.S    .63
  1824.     ADDQ.L    #4,A0
  1825.     TST.L    (A0)
  1826.     BEQ.W    .70
  1827.     BRA.S    .64
  1828.  
  1829. .63    MOVE.L    (A0),A0
  1830.     MOVE.L    D6,D0
  1831.     LSL.L    #2,D0
  1832.     TST.L    (A0,D0.L)
  1833.     BEQ.W    .70
  1834.     MOVE.L    (A0,D0.L),A2
  1835.     
  1836.     MOVE.L    PARAMTABBASE(PC),A0
  1837. .65    CMP.L    #PCH_DATALENGTH,(A0)+
  1838.     BEQ.S    .66
  1839.     ADDQ.L    #4,A0
  1840.     TST.L    (A0)
  1841.     BEQ.W    .ERRINSTRUCT
  1842.     BRA.S    .65
  1843.  
  1844. .66    MOVE.L    (A0),A0
  1845.     MOVE.L    D6,D0
  1846.     LSL.L    #2,D0
  1847.     TST.L    (A0,D0.L)
  1848.     BEQ.W    .ERRINSTRUCT
  1849.     MOVE.L    (A0,D0.L),A3
  1850.  
  1851.     MOVE.L    WIN1RASTPORT(PC),A1
  1852.     MOVE.L    #28,D0
  1853.     MOVE.L    #121,D1
  1854.     MOVE.L    GRABASE(PC),A6
  1855.     JSR    _LVOMOVE(A6)
  1856.     MOVE.L    PARAMTABBASE(PC),A0
  1857. .S43    CMP.L    #PCH_STATE2,(A0)+
  1858.     BEQ.S    .S44
  1859.     ADDQ.L    #4,A0
  1860.     TST.L    (A0)
  1861.     BEQ.S    .S45
  1862.     BRA.S    .S43
  1863.  
  1864. .S44    MOVE.L    (A0),A0
  1865.     MOVE.L    D6,D0
  1866.     LSL.L    #2,D0
  1867.     TST.L    (A0,D0.L)
  1868.     BEQ.S    .S45
  1869.     MOVE.L    (A0,D0.L),A0
  1870.     MOVE.L    A0,A1
  1871.     BRA.S    .S46
  1872.  
  1873. .S47    ADDQ.L    #1,A1
  1874. .S46    MOVE.B    (A1),D0
  1875.     BEQ.S    .S48
  1876.     CMP.B    #$A,D0
  1877.     BNE.S    .S47
  1878.     MOVE.L    A1,D0
  1879.     SUB.L    A0,D0
  1880.     MOVE.L    A1,A4
  1881.     MOVE.L    WIN1RASTPORT(PC),A1
  1882.     MOVE.L    GRABASE(PC),A6
  1883.     JSR    _LVOTEXT(A6)
  1884.     MOVE.L    WIN1RASTPORT(PC),A1
  1885.     MOVE.L    #28,D0
  1886.     MOVE.L    #131,D1
  1887.     MOVE.L    GRABASE(PC),A6
  1888.     JSR    _LVOMOVE(A6)
  1889.     ADDQ.L    #1,A4
  1890.     MOVE.L    A4,A0
  1891.     MOVE.L    A0,A1
  1892.     BRA.S    .S49
  1893.  
  1894. .S50    ADDQ.L    #1,A1
  1895. .S49    MOVE.B    (A1),D0
  1896.     BEQ.S    .S48
  1897.     CMP.B    #$A,D0
  1898.     BNE.S    .S50
  1899. .S48    MOVE.L    A1,D0
  1900.     SUB.L    A0,D0
  1901.     MOVE.L    WIN1RASTPORT(PC),A1
  1902.     MOVE.L    GRABASE(PC),A6
  1903.     JSR    _LVOTEXT(A6)
  1904.  
  1905. .S45
  1906.     TST.B    FILENAMEGIVEN
  1907.     BEQ.W    .ERRINSTRUCT
  1908.     LEA.L    FILNAME(PC),A1
  1909.     MOVE.L    A1,D1
  1910.     MOVE.L    #MODE_NEWFILE,D2
  1911.     MOVE.L    DOSBAS(PC),A6
  1912.     JSR    _LVOOPEN(A6)
  1913.     TST.L    D0
  1914.     BEQ.W    ERR
  1915.     MOVE.L    D0,FILHANDLE
  1916.     MOVE.L    FILHANDLE(PC),D1
  1917.     MOVE.L    A2,D2
  1918.  
  1919.     MOVE.L    A3,D3
  1920.     MOVE.L    DOSBAS(PC),A6
  1921.     JSR    _LVOWRITE(A6)
  1922.     TST.L    D0
  1923.     BMI.W    ERR
  1924.     BEQ.W    ERR
  1925.     MOVE.L    FILHANDLE(PC),D1
  1926.     MOVE.L    DOSBAS(PC),A6
  1927.     JSR    _LVOCLOSE(A6)
  1928.     CLR.L    FILHANDLE
  1929.     BRA.W    .6
  1930.  
  1931. .70
  1932. ;MANUELLE DISKBEARBEITUNG
  1933.     LEA.L    FILNAME(PC),A1
  1934.     MOVE.L    A1,D1
  1935.     MOVE.L    #MODE_READWRITE,D2
  1936.     MOVE.L    DOSBAS(PC),A6
  1937.     JSR    _LVOLOCK(A6)
  1938.     TST.L    D0
  1939.     BEQ.W    ERR
  1940.     MOVE.L    D0,PARAMLOCK
  1941.     MOVE.L    PARAMLOCK(PC),D1
  1942.     MOVE.L    #PARAMINFO,D2
  1943.     MOVE.L    DOSBAS(PC),A6
  1944.     JSR    _LVOEXAMINE(A6)
  1945.     TST.L    D0
  1946.     BEQ.W    ERR
  1947.     MOVE.L    PARAMLOCK(PC),D1
  1948.     MOVE.L    DOSBAS(PC),A6
  1949.     JSR    _LVOUNLOCK(A6)
  1950.     CLR.L    PARAMLOCK
  1951.     MOVEQ.L    #0,D5
  1952.     MOVEQ.L    #0,D4
  1953.     MOVE.L    PARAMTABBASE(PC),A0
  1954. .26    CMP.L    #PCH_LOADOFFSET,(A0)+
  1955.     BEQ.S    .28
  1956.     ADDQ.L    #4,A0
  1957.     TST.L    (A0)
  1958.     BEQ.S    .27
  1959.     BRA.S    .26
  1960.  
  1961. .28    MOVE.L    (A0),A0
  1962.     MOVE.L    D6,D0
  1963.     LSL.L    #2,D0
  1964.     MOVE.L    (A0,D0.L),D5
  1965. .27
  1966.     MOVE.L    PARAMTABBASE(PC),A0
  1967. .O26    CMP.L    #PCH_APPENDSPACE,(A0)+
  1968.     BEQ.S    .O28
  1969.     ADDQ.L    #4,A0
  1970.     TST.L    (A0)
  1971.     BEQ.S    .O27
  1972.     BRA.S    .O26
  1973.  
  1974. .O28    MOVE.L    (A0),A0
  1975.     MOVE.L    D6,D0
  1976.     LSL.L    #2,D0
  1977.     MOVE.L    (A0,D0.L),D4
  1978. .O27
  1979.     LEA.L    PARAMINFO,A0
  1980.     MOVE.L    FIB_SIZE(A0),D3
  1981.     ADD.L    D5,D3
  1982.     ADD.L    D4,D3
  1983.  
  1984.     MOVE.L    PARAMTABBASE(PC),A0
  1985. .O6    CMP.L    #PCH_DATALENGTH,(A0)+
  1986.     BEQ.S    .O8
  1987.     ADDQ.L    #4,A0
  1988.     TST.L    (A0)
  1989.     BEQ.S    .O7
  1990.     BRA.S    .O6
  1991.  
  1992. .O8    MOVE.L    (A0),A0
  1993.     MOVE.L    D6,D0
  1994.     LSL.L    #2,D0
  1995.     TST.L    (A0,D0.L)
  1996.     BEQ.S    .O7
  1997.     
  1998.     CMP.L    (A0,D0.L),D3
  1999.     BNE.W    .ERRINLENGTH
  2000. .O7
  2001.     MOVE.L    D3,FILSIZE(A5)
  2002.     MOVE.L    D3,D0
  2003.     ADDQ.L    #7,D0
  2004.     AND.L    #$FFFFFFF8,D0
  2005.     MOVE.L    #MEMF_CLEAR,D1
  2006.     MOVE.L    (_SYSBASE).W,A6
  2007.     JSR    _LVOALLOCMEM(A6)
  2008.     TST.L    D0
  2009.     BEQ.W    ERR
  2010.     MOVE.L    D0,FILEMEMADR(A5)    
  2011.  
  2012.     LEA.L    FILNAME(PC),A1
  2013.     MOVE.L    A1,D1
  2014.     MOVE.L    #MODE_OLDFILE,D2
  2015.     MOVE.L    DOSBAS(PC),A6
  2016.     JSR    _LVOOPEN(A6)
  2017.     TST.L    D0
  2018.     BEQ.W    ERR
  2019.     MOVE.L    D0,FILHANDLE
  2020.     MOVE.L    FILHANDLE(PC),D1
  2021.     MOVE.L    FILEMEMADR(PC),D2
  2022.     ADD.L    D5,D2
  2023.     LEA.L    PARAMINFO,A0
  2024.     MOVE.L    FIB_SIZE(A0),D3
  2025.     MOVE.L    DOSBAS(PC),A6
  2026.     JSR    _LVOREAD(A6)
  2027.     TST.L    D0
  2028.     BMI.W    ERR
  2029.     BEQ.W    ERR
  2030.     MOVE.L    FILHANDLE(PC),D1
  2031.     MOVE.L    DOSBAS(PC),A6
  2032.     JSR    _LVOCLOSE(A6)
  2033.     CLR.L    FILHANDLE
  2034.  
  2035.     MOVE.L    WIN1RASTPORT(PC),A1
  2036.     MOVE.L    #28,D0
  2037.     MOVE.L    #121,D1
  2038.     MOVE.L    GRABASE(PC),A6
  2039.     JSR    _LVOMOVE(A6)
  2040.     MOVE.L    PARAMTABBASE(PC),A0
  2041. .O43    CMP.L    #PCH_STATE2,(A0)+
  2042.     BEQ.S    .O44
  2043.     ADDQ.L    #4,A0
  2044.     TST.L    (A0)
  2045.     BEQ.S    .O45
  2046.     BRA.S    .O43
  2047.  
  2048. .O44    MOVE.L    (A0),A0
  2049.     MOVE.L    D6,D0
  2050.     LSL.L    #2,D0
  2051.     TST.L    (A0,D0.L)
  2052.     BEQ.S    .O45
  2053.     MOVE.L    (A0,D0.L),A0
  2054.     MOVE.L    A0,A1
  2055.     BRA.S    .O46
  2056.  
  2057. .O47    ADDQ.L    #1,A1
  2058. .O46    MOVE.B    (A1),D0
  2059.     BEQ.S    .O48
  2060.     CMP.B    #$A,D0
  2061.     BNE.S    .O47
  2062.     MOVE.L    A1,D0
  2063.     SUB.L    A0,D0
  2064.     MOVE.L    A1,A4
  2065.     MOVE.L    WIN1RASTPORT(PC),A1
  2066.     MOVE.L    GRABASE(PC),A6
  2067.     JSR    _LVOTEXT(A6)
  2068.     MOVE.L    WIN1RASTPORT(PC),A1
  2069.     MOVE.L    #28,D0
  2070.     MOVE.L    #131,D1
  2071.     MOVE.L    GRABASE(PC),A6
  2072.     JSR    _LVOMOVE(A6)
  2073.     ADDQ.L    #1,A4
  2074.     MOVE.L    A4,A0
  2075.     MOVE.L    A0,A1
  2076.     BRA.S    .O49
  2077.  
  2078. .O50    ADDQ.L    #1,A1
  2079. .O49    MOVE.B    (A1),D0
  2080.     BEQ.S    .O48
  2081.     CMP.B    #$A,D0
  2082.     BNE.S    .O50
  2083. .O48    MOVE.L    A1,D0
  2084.     SUB.L    A0,D0
  2085.     MOVE.L    WIN1RASTPORT(PC),A1
  2086.     MOVE.L    GRABASE(PC),A6
  2087.     JSR    _LVOTEXT(A6)
  2088.  
  2089. .O45
  2090.     MOVE.L    PARAMTABBASE(PC),A0
  2091. .29    CMP.L    #PCH_PROCESSING,(A0)+
  2092.     BEQ.S    .30
  2093.     ADDQ.L    #4,A0
  2094.     TST.L    (A0)
  2095.     BEQ.S    .31
  2096.     BRA.S    .29
  2097.  
  2098. .30    MOVE.L    (A0),A0
  2099.     MOVE.L    D6,D0
  2100.     LSL.L    #2,D0
  2101.     TST.L    (A0,D0.L)
  2102.     BEQ.S    .31
  2103.     MOVE.L    (A0,D0.L),A0
  2104.     MOVEM.L    D2-D7/A2-A6,-(A7)
  2105.     JSR    (A0)
  2106.     MOVEM.L    (A7)+,D2-D7/A2-A6
  2107.     TST.L    D0
  2108.     BNE.W    .ERRINPARM
  2109.  
  2110. .31
  2111.     MOVE.L    PARAMTABBASE(PC),A0
  2112. .32    CMP.L    #PCH_CHANGES,(A0)+
  2113.     BEQ.S    .34
  2114.     ADDQ.L    #4,A0
  2115.     TST.L    (A0)
  2116.     BEQ.S    .33
  2117.     BRA.S    .32
  2118.  
  2119. .34    MOVE.L    (A0),A0
  2120.     MOVE.L    D6,D0
  2121.     LSL.L    #2,D0
  2122.     TST.L    (A0,D0.L)
  2123.     BEQ.S    .33
  2124.     MOVE.L    (A0,D0.L),A1
  2125.     BSR.W    MODIFY
  2126.     TST.L    D0
  2127.     BNE.W    .ERRINPARM
  2128. .33
  2129.     TST.B    FILENAMEGIVEN
  2130.     BEQ.S    .58
  2131.     LEA.L    FILNAME(PC),A1
  2132.     MOVE.L    A1,D1
  2133.     MOVE.L    #MODE_NEWFILE,D2
  2134.     MOVE.L    DOSBAS(PC),A6
  2135.     JSR    _LVOOPEN(A6)
  2136.     TST.L    D0
  2137.     BEQ.W    ERR
  2138.     MOVE.L    D0,FILHANDLE
  2139.     MOVE.L    FILHANDLE(PC),D1
  2140.     MOVE.L    FILEMEMADR(PC),D2
  2141.  
  2142.     MOVE.L    FILSIZE(PC),D3
  2143.     MOVE.L    DOSBAS(PC),A6
  2144.     JSR    _LVOWRITE(A6)
  2145.     TST.L    D0
  2146.     BMI.W    ERR
  2147.     BEQ.W    ERR
  2148.     MOVE.L    FILHANDLE(PC),D1
  2149.     MOVE.L    DOSBAS(PC),A6
  2150.     JSR    _LVOCLOSE(A6)
  2151.     CLR.L    FILHANDLE
  2152.  
  2153. .58    MOVE.L    FILEMEMADR(PC),A1
  2154.     MOVE.L    FILSIZE(PC),D0
  2155.     ADDQ.L    #7,D0
  2156.     AND.L    #$FFFFFFF8,D0
  2157.     MOVE.L    (_SYSBASE).W,A6
  2158.     JSR    _LVOFREEMEM(A6)
  2159.     CLR.L    FILEMEMADR(A5)
  2160.     CLR.L    FILSIZE(A5)
  2161.  
  2162.     BRA.W    .6
  2163.  
  2164. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2165.  
  2166. FORMATDEST
  2167.     TST.L    D0
  2168.     BEQ.S    .Y
  2169. .ERR2    MOVEQ.L    #-1,D0
  2170.     RTS
  2171.  
  2172. .Y    MOVEM.L    D2-D7/A2-A6,-(A7)
  2173.     LEA.L    DOSBAS(PC),A5
  2174.     LEA.L    ROOTBL+108*4+1(PC),A1
  2175.     MOVEQ.L    #-1,D1
  2176. .2    CMP.B    #30,D1
  2177.     BEQ.S    .1
  2178.     ADDQ.B    #1,D1
  2179.     MOVE.B    (A0)+,(A1)+
  2180.     BNE.S    .2
  2181. .1    MOVE.B    D1,ROOTBL+108*4
  2182.     CLR.L    ROOTBL+$5*4
  2183.     LEA.L    ROOTBL(PC),A1
  2184.     MOVEQ.L    #0,D1
  2185.     MOVEQ.L    #$200/4-1,D0
  2186. .3    ADD.L    (A1)+,D1
  2187.     DBF    D0,.3
  2188.     NEG.L    D1
  2189.     MOVE.L    D1,ROOTBL+5*4
  2190.  
  2191.     MOVE.L    #DESTDEVICE,D1
  2192.     MOVE.L    DOSBAS(PC),A6
  2193.     JSR    _LVODEVICEPROC(A6)
  2194.     TST.L    D0
  2195.     BEQ.S    .ERR2
  2196.     MOVE.L    D0,A3
  2197.     MOVE.L    DOSPACKETS(PC),A1
  2198.     LEA.L    $14(A1),A0
  2199.     MOVE.L    A0,LN_NAME(A1)
  2200.     MOVE.L    A1,$14+DP_LINK(A1)
  2201.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2202.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2203.     MOVE.L    #-1,$14+DP_ARG1(A1)
  2204.     MOVE.L    A3,A0
  2205.     MOVE.L    (_SYSBASE).W,A6
  2206.     JSR    _LVOPUTMSG(A6)
  2207.     MOVE.L    MYPORT(PC),A0
  2208.     JSR    _LVOWAITPORT(A6)
  2209.     MOVE.L    MYPORT(PC),A0
  2210.     JSR    _LVOGETMSG(A6)
  2211.  
  2212.  
  2213. ;MESSAGE+DOSPACKET-STRUKTUR EINRICHTEN
  2214.  
  2215.     LEA.L    FORMATQUEST(PC),A0
  2216.     LEA.L    FORMATQUEST2(PC),A1
  2217.     BSR.W    ASKREQUEST
  2218.     TST.L    D0
  2219.     BEQ.S    .4
  2220. .ERR    MOVE.L    DOSPACKETS(PC),A1
  2221.     LEA.L    $14(A1),A0
  2222.     MOVE.L    A0,LN_NAME(A1)
  2223.     MOVE.L    A1,$14+DP_LINK(A1)
  2224.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2225.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2226.     MOVE.L    #0,$14+DP_ARG1(A1)
  2227.     MOVE.L    A3,A0
  2228.     MOVE.L    (_SYSBASE).W,A6
  2229.     JSR    _LVOPUTMSG(A6)
  2230.     MOVE.L    MYPORT(PC),A0
  2231.     JSR    _LVOWAITPORT(A6)
  2232.     MOVE.L    MYPORT(PC),A0
  2233.     JSR    _LVOGETMSG(A6)
  2234.  
  2235.     MOVEM.L    (A7)+,D2-D7/A2-A6
  2236.     MOVEQ.L    #-1,D0
  2237.     RTS
  2238.  
  2239. .4    
  2240.     MOVEQ.L    #0,D7
  2241.     MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2242.     MOVE.W    #TD_CHANGESTATE,IO_COMMAND(A1)
  2243.     MOVE.L    (_SYSBASE).W,A6
  2244.     JSR    _LVODOIO(A6)
  2245.     TST.L    IO_ACTUAL(A1)
  2246.     BNE.S    .ERR
  2247.  
  2248.     MOVE.W    #$1600/4-1,D0
  2249.     MOVE.L    DOSBAS+PTB_SPACE(A5),A0
  2250. .7    CLR.L    (A0)+
  2251. ;.7    MOVE.L    #$AA,(A0)+
  2252.     DBF    D0,.7
  2253. ;    MOVE.L    DOSBAS+PTB_SPACE(A5),A0
  2254. ;    MOVE.L    A0,(A0)
  2255.  
  2256.     MOVE.L    #$0,D2
  2257.  
  2258. .8    MOVEQ.L    #$4,D6
  2259. .55    MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2260.     MOVE.L    DOSBAS+PTB_SPACE(A5),IO_DATA(A1)
  2261.     MOVE.L    #$1600,IO_LENGTH(A1)
  2262.     MOVE.L    D2,IO_OFFSET(A1)
  2263.     MOVE.W    #TD_FORMAT,IO_COMMAND(A1)
  2264.     MOVE.L    (_SYSBASE).W,A6
  2265.     JSR    _LVODOIO(A6)
  2266.     TST.L    D0
  2267.     BEQ.S    .R1OK
  2268.     DBF    D6,.55
  2269.     BRA.W    .ERR
  2270.  
  2271. .R1OK    ADD.L    #$1600,D2
  2272.     CMP.L    #$A0*$1600,D2
  2273.     BNE.S    .8
  2274.  
  2275.     MOVEQ.L    #$4,D6
  2276. .REP    MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2277.     MOVE.L    #ROOTBL,IO_DATA(A1)
  2278.     MOVE.L    #$400,IO_LENGTH(A1)
  2279.     MOVE.L    #$370*$200,IO_OFFSET(A1)
  2280.     MOVE.W    #CMD_WRITE,IO_COMMAND(A1)
  2281.     MOVE.L    (_SYSBASE).W,A6
  2282.     JSR    _LVODOIO(A6)
  2283.     TST.L    D0
  2284.     BEQ.S    .R2OK
  2285.     DBF    D6,.REP
  2286.     BRA.W    .ERR
  2287.  
  2288. .R2OK
  2289.     MOVEQ.L    #BOOTEND-BOOTBL-1,D0
  2290.     LEA.L    BOOTBL(PC),A0
  2291.     MOVE.L    DOSBAS+PTB_SPACE(A5),A1
  2292. .9    MOVE.B    (A0)+,(A1)+
  2293.     DBF    D0,.9
  2294.     MOVEQ.L    #$4,D6
  2295. .REP2    MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2296.     MOVE.L    DOSBAS+PTB_SPACE(A5),IO_DATA(A1)
  2297.     MOVE.L    #$400,IO_LENGTH(A1)
  2298.     MOVE.L    #$0*$200,IO_OFFSET(A1)
  2299.     MOVE.W    #CMD_WRITE,IO_COMMAND(A1)
  2300.     MOVE.L    (_SYSBASE).W,A6
  2301.     JSR    _LVODOIO(A6)
  2302.     TST.L    D0
  2303.     BEQ.S    .R3OK
  2304.     DBF    D6,.REP2
  2305.     BRA.W    .ERR
  2306.  
  2307. .R3OK
  2308.     MOVE.L    DOSBAS+PTB_DEVICEDESTPTR(A5),A1
  2309.     MOVE.W    #CMD_UPDATE,IO_COMMAND(A1)
  2310.     MOVE.L    (_SYSBASE).W,A6
  2311.     JSR    _LVODOIO(A6)
  2312.     TST.L    D0
  2313.     BEQ.S    .R4OK
  2314.     BRA.W    .ERR
  2315.  
  2316. .R4OK    MOVE.L    DOSBAS+PTB_DEVICESOURCEPTR(A5),A1
  2317.     MOVE.L    #0,IO_LENGTH(A1)
  2318.     MOVE.W    #TD_MOTOR,IO_COMMAND(A1)
  2319.     MOVE.L    (_SYSBASE).W,A6
  2320.     JSR    _LVODOIO(A6)
  2321.  
  2322.     MOVE.L    DOSPACKETS(PC),A1
  2323.     LEA.L    $14(A1),A0
  2324.     MOVE.L    A0,LN_NAME(A1)
  2325.     MOVE.L    A1,$14+DP_LINK(A1)
  2326.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2327.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2328.     MOVE.L    #0,$14+DP_ARG1(A1)
  2329.     MOVE.L    A3,A0
  2330.     MOVE.L    (_SYSBASE).W,A6
  2331.     JSR    _LVOPUTMSG(A6)
  2332.     MOVE.L    MYPORT(PC),A0
  2333.     JSR    _LVOWAITPORT(A6)
  2334.     MOVE.L    MYPORT(PC),A0
  2335.     JSR    _LVOGETMSG(A6)
  2336.  
  2337.     MOVEM.L    (A7)+,D2-D7/A2-A6
  2338.     MOVEQ.L    #0,D0
  2339.     RTS
  2340.  
  2341.  
  2342. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2343.  
  2344. ASKREQUEST
  2345.     MOVE.L    A0,ASKING
  2346.     MOVE.L    A1,ASKING2
  2347.     MOVEM.L    D2/D3/A2/A3,-(A7)
  2348.     SUBA.L    A0,A0
  2349.     LEA.L    BODYTEXT(PC),A1
  2350.     LEA.L    LEFTTEXT(PC),A2
  2351.     LEA.L    RIGHTTEXT(PC),A3
  2352.     MOVEQ    #0,D0
  2353.     MOVEQ    #0,D1
  2354.     MOVE.W    #300,D2
  2355.     MOVEQ    #60,D3
  2356.     MOVE.L    INTUIBASE(PC),A6
  2357.     JSR    _LVOAUTOREQUEST(A6)
  2358.     MOVEM.L    (A7)+,D2/D3/A2/A3
  2359.     TST.L    D0
  2360.     BEQ.S    .1
  2361. ;.OK
  2362.     MOVEQ.L    #0,D0
  2363.     RTS
  2364.  
  2365. ;.CANCEL
  2366. .1    MOVEQ.L    #-1,D0
  2367.     RTS
  2368.  
  2369. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2370.  
  2371. INHIBITDRIVE
  2372.     MOVEM.L    D1-A6,-(A7)
  2373.     CMP.L    #0,D0
  2374.     BNE.S    .1
  2375.     LEA.L    SRCDEVICE(PC),A2
  2376.     BRA.S    .3
  2377.  
  2378. .1    CMP.L    #1,D0
  2379.     BNE.S    .2
  2380.     LEA.L    DESTDEVICE(PC),A2
  2381.     BRA.S    .3
  2382.  
  2383. .ERR
  2384. .2    ST.B    D0
  2385.     MOVEM.L    (A7)+,D1-A6
  2386.     RTS
  2387.  
  2388. .3    MOVE.L    A2,D1
  2389.     MOVE.L    DOSBAS(PC),A6
  2390.     JSR    _LVODEVICEPROC(A6)
  2391.     TST.L    D0
  2392.     BEQ.S    .ERR
  2393.     MOVE.L    D0,A3
  2394.     MOVE.L    DOSPACKETS(PC),A1
  2395.     LEA.L    $14(A1),A0
  2396.     MOVE.L    A0,LN_NAME(A1)
  2397.     MOVE.L    A1,$14+DP_LINK(A1)
  2398.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2399.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2400.     MOVE.L    #-1,$14+DP_ARG1(A1)
  2401.     MOVE.L    A3,A0
  2402.     MOVE.L    (_SYSBASE).W,A6
  2403.     JSR    _LVOPUTMSG(A6)
  2404.     MOVE.L    MYPORT(PC),A0
  2405.     JSR    _LVOWAITPORT(A6)
  2406.     MOVE.L    MYPORT(PC),A0
  2407.     JSR    _LVOGETMSG(A6)
  2408.     MOVEQ.L    #0,D0
  2409.     MOVEM.L    (A7)+,D1-A6
  2410.     RTS
  2411.  
  2412. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2413.  
  2414. ENABLEDRIVE
  2415.     MOVEM.L    D1-A6,-(A7)
  2416.     CMP.L    #0,D0
  2417.     BNE.S    .1
  2418.     LEA.L    SRCDEVICE(PC),A2
  2419.     BRA.S    .3
  2420.  
  2421. .1    CMP.L    #1,D0
  2422.     BNE.S    .2
  2423.     LEA.L    DESTDEVICE(PC),A2
  2424.     BRA.S    .3
  2425.  
  2426. .ERR
  2427. .2    ST.B    D0
  2428.     MOVEM.L    (A7)+,D1-A6
  2429.     RTS
  2430.  
  2431. .3    MOVE.L    A2,D1
  2432.     MOVE.L    DOSBAS(PC),A6
  2433.     JSR    _LVODEVICEPROC(A6)
  2434.     TST.L    D0
  2435.     BEQ.S    .ERR
  2436.     MOVE.L    D0,A3
  2437.     MOVE.L    DOSPACKETS(PC),A1
  2438.     LEA.L    $14(A1),A0
  2439.     MOVE.L    A0,LN_NAME(A1)
  2440.     MOVE.L    A1,$14+DP_LINK(A1)
  2441.     MOVE.L    MYPORT(PC),$14+DP_PORT(A1)
  2442.     MOVE.L    #$1F,$14+DP_TYPE(A1)
  2443.     MOVE.L    #0,$14+DP_ARG1(A1)
  2444.     MOVE.L    A3,A0
  2445.     MOVE.L    (_SYSBASE).W,A6
  2446.     JSR    _LVOPUTMSG(A6)
  2447.     MOVE.L    MYPORT(PC),A0
  2448.     JSR    _LVOWAITPORT(A6)
  2449.     MOVE.L    MYPORT(PC),A0
  2450.     JSR    _LVOGETMSG(A6)
  2451.     MOVEQ.L    #0,D0
  2452.     MOVEM.L    (A7)+,D1-A6
  2453.     RTS
  2454.  
  2455. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2456.  
  2457. schlafen
  2458.     move.l    WINDOW1(PC),a0        ;Windowstruktur nach a0
  2459.     move.l    $56(a0),a0        ;UserPort holen
  2460.     move.l    a0,a3            ;retten
  2461. .3    move.l    a3,a0            ;userPort holen
  2462.     move.l    (_SYSBASE).W,a6        ;execBase nach a6
  2463.     jsr    _LVOGETMSG(a6)        ;Nachricht holen
  2464.     move.l    d0,a1            ;und sichern
  2465.     TST.L    D0
  2466.     BNE.S    .4
  2467.  
  2468.     MOVE.L    A3,A0
  2469.     move.b    $0f(a0),d1        ;Signalmaske holen
  2470.     moveq    #0,d0            ;d0 löschen
  2471.     bset    d1,d0            ;benötigte Signale setzen
  2472.     move.l    (_SYSBASE).W,A6        ;auf Nachricht
  2473.     jsr    _LVOWAIT(a6)        ;warten
  2474.     BRA.S    .3
  2475.  
  2476. .4    move.l    $14(a1),d4        ;diverse
  2477.     move.W    $12(a1),d5        ;Parameter
  2478.     LEA.L    $14(A1),A0
  2479.     LEA.L    MSGBUFFER+2(PC),A2
  2480.     MOVE.W    D5,MSGBUFFER
  2481.     CMP.W    #$20,D5
  2482.     BLO.S    .2
  2483.     MOVE.L    #$20,D5
  2484. .2    SUBQ.W    #1,D5
  2485. .1    MOVE.B    (A0)+,(A2)+
  2486.     DBF    D5,.1
  2487.     move.l    $1c(a1),a4        ;sichern
  2488.     move.l    (_SYSBASE).W,A6        ;execBase nach a6
  2489.     jsr    _LVOREPLYMSG(A6)    ;Nachricht beantworten
  2490.     rts
  2491.  
  2492. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2493.  
  2494. GETPARPTR    LEA.L    MEMORYBASE(PC),A3
  2495.     BRA.S    .3
  2496.  
  2497. .1    MOVE.L    (A3),A3
  2498.     CMP.L    #0,A3
  2499.     BEQ.S    .5
  2500. .3    DBF    D0,.1
  2501.     MOVE.L    4(A3),A2
  2502. .2    CMP.L    #PCH_NAME,(A2)+
  2503.     BEQ.S    .4
  2504.     ADDQ.L    #4,A2
  2505.     BRA.S    .2
  2506.  
  2507. .4    MOVE.L    (A2),D0
  2508.     RTS
  2509.  
  2510. .5    MOVE.L    #TEXT1,D0
  2511.     RTS
  2512.  
  2513. ;---------------------------------------------------------------------------
  2514.  
  2515. ;PROGRAM FOR MODIFYING
  2516. ;DATAFORMAT OF COMPTAB SEE MAKECOMP
  2517. ;IT USES THE REGISTERS A0,A1,A3 AND D0,D1
  2518. ;/ A3 FILEBUFFER
  2519. ;< A1 ^COMPTAB
  2520. ;> D0 ERROR, IF SET
  2521.  
  2522. MODIFY    MOVE.L    FILEMEMADR(PC),A3
  2523.  
  2524. .3    MOVE.L    (A1)+,D0
  2525.     MOVE.L    D0,D1
  2526.     AND.L    #$1FFFFF,D1
  2527.     LEA.L    (A3,D1.L),A0
  2528.     AND.L    #$E00000,D0    ;CAN DETECT ANY COMBINATION OF BITS $15 - $17
  2529.     CMP.L    #$400000,D0
  2530.     BEQ.S    .1
  2531.     CMP.L    #$800000,D0
  2532.     BEQ.S    .2
  2533.     CMP.L    #$0,D0
  2534.     BNE.S    .ERRMODIFY    ;ILLEGAL SPECIAL VALUE - HERE NOT SUPPORTED
  2535.     MOVE.B    (A1),(A0)
  2536.     BRA.S    .3
  2537.  
  2538. .2    MOVEQ.L    #0,D1
  2539.     MOVE.B    (A1)+,D1
  2540.     SUBQ.L    #1,D1
  2541. .4    MOVE.B    (A1)+,(A0)+
  2542.     DBF    D1,.4
  2543.     MOVE.L    A1,D1
  2544.     AND.L    #$FFFFFFFE,D1
  2545.     MOVE.L    D1,A1
  2546.     BRA.S    .3
  2547.  
  2548. .1    CLR.L    D0
  2549.     RTS
  2550.  
  2551. .ERRMODIFY    MOVEQ.L    #-$1,D0
  2552.     RTS
  2553.  
  2554. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2555.  
  2556. EXAMCL
  2557. .1    CMP.B    #$20,(A0)
  2558.     BNE.S    .2
  2559.     ADDQ.L    #1,A0
  2560.     BRA.S    .1
  2561.  
  2562. .2    CMP.B    #$9,(A0)
  2563.     BNE.S    .3
  2564.     ADDQ.L    #1,A0
  2565.     BRA.S    .1
  2566.  
  2567. .3    CMP.B    #$A,(A0)
  2568.     BNE.S    .4
  2569.     RTS
  2570.  
  2571. .4    CMP.B    #$0,(A0)
  2572.     BNE.S    .5
  2573. .6    RTS
  2574.  
  2575. .5    CMP.B    #'-',(A0)
  2576.     BNE.S    .6
  2577.     ADDQ.L    #1,A0
  2578.     CMP.B    #'s',(A0)
  2579.     BNE.S    .7
  2580.     ADDQ.L    #1,A0
  2581.     LEA.L    SRCDEVICE(PC),A1
  2582. .10    MOVE.B    (A0)+,(A1)+
  2583.     CMP.B    #$20,(A0)
  2584.     BEQ.S    .1
  2585.     CMP.B    #$9,(A0)
  2586.     BEQ.S    .1
  2587.     CMP.B    #$A,(A0)
  2588.     BEQ.S    .9
  2589.     CMP.B    #$0,(A0)
  2590.     BNE.S    .10
  2591. .9    RTS
  2592.  
  2593. .7    CMP.B    #'d',(A0)
  2594.     BNE.S    .P1
  2595.     ADDQ.L    #1,A0
  2596.     LEA.L    DESTDEVICE(PC),A1
  2597.     BRA.S    .10
  2598.  
  2599. .p1    CMP.B    #'p',(A0)
  2600.     BNE.S    .6
  2601.     ADDQ.L    #1,A0
  2602.     ST    EXEC1PARAM
  2603.     LEA.L    PARAMFILENAM(PC),A1
  2604.     BRA.S    .10
  2605.  
  2606. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2607.  
  2608.     ENDB    A5
  2609. OPENDEV    MOVEM.L    D1-A6,-(A7)
  2610.     CMP.L    #0,D0
  2611.     BNE.S    .1
  2612.     LEA.L    SRCDEVICE(PC),A2
  2613.     MOVE.L    SOURCEIORQ(PC),A3
  2614.     LEA.L    DEVICESOURCEPTR(PC),A5
  2615.     BRA.S    .3
  2616.  
  2617. .1    CMP.L    #1,D0
  2618.     BNE.S    .2
  2619.     LEA.L    DESTDEVICE(PC),A2
  2620.     MOVE.L    DESTIORQ(PC),A3
  2621.     LEA.L    DEVICEDESTPTR(PC),A5
  2622.     BRA.S    .3
  2623.  
  2624. .ERR
  2625. .2    ST.B    D0
  2626.     MOVEM.L    (A7)+,D1-A6
  2627.     RTS
  2628.  
  2629. .3    SUB.L    A4,A4                ;A4 IS ZERO!
  2630.     MOVE.L    DOSBAS(PC),D0
  2631.     MOVE.L    DL_ROOT(A4,D0.L),D0
  2632.     MOVE.L    RN_INFO(A4,D0.L),D0
  2633.     LSL.L    #2,D0
  2634.     MOVE.L    DI_DEVINFO(A4,D0.L),D0
  2635.     LSL.L    #2,D0
  2636.     MOVE.L    D0,D4
  2637.     BRA.S    .6
  2638.  
  2639. .5    MOVE.L    DN_NEXT(A4,D0.L),D0
  2640.     BEQ.S    .ERR
  2641.     LSL.L    #2,D0
  2642. .6    MOVE.L    DN_TYPE(A4,D0.L),D1
  2643.     CMP.L    #0,D1
  2644.     BNE.S    .5
  2645.     MOVE.L    DN_NAME(A4,D0.L),D1
  2646.     LSL.L    #2,D1
  2647.     ADDQ.L    #1,D1
  2648.     MOVE.L    D1,A1
  2649.     MOVE.L    A2,A0
  2650. .7    MOVE.B    (A0)+,D2
  2651.     MOVE.B    (A1)+,D3
  2652.     CMP.B    #$61,D2
  2653.     BLO.S    .S1
  2654.     CMP.B    #$7A,D2
  2655.     BHI.S    .S1
  2656.     AND.B    #%11011111,D2
  2657. .S1    CMP.B    #$61,D3
  2658.     BLO.S    .S2
  2659.     CMP.B    #$7A,D3
  2660.     BHI.S    .S2
  2661.     AND.B    #%11011111,D3
  2662. .S2    CMP.B    D2,D3
  2663.     BEQ.S    .7
  2664.     CMP.B    #':',-1(A0)
  2665.     BNE.S    .5
  2666.     TST.B    -1(A1)
  2667.     BNE.S    .5
  2668.     MOVE.L    DN_STARTUP(A4,D0.L),D0
  2669.     LSL.L    #2,D0
  2670.     MOVE.L    D0,(FSSMSOURCEPTR-DEVICESOURCEPTR)(A5)
  2671.     MOVE.L    FSSM_DEVICE(A4,D0.L),D1
  2672.     LSL.L    #2,D1
  2673.     ADDQ.L    #1,D1
  2674.     MOVE.L    D1,A0
  2675.     MOVE.L    FSSM_UNIT(A4,D0.L),D0
  2676.     MOVE.L    A3,A1
  2677.     MOVEQ.L    #0,D1
  2678.     MOVE.L    4.W,A6
  2679.     JSR    _LVOOPENDEVICE(A6)
  2680.     TST.L    D0
  2681.     BNE.S    .4
  2682.     MOVE.L    A3,(A5)
  2683. .4    MOVEM.L    (A7)+,D1-A6
  2684.     RTS
  2685.  
  2686. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2687.  
  2688. CRCEVAL        movem.l    d2/d5/d7/A1,-(a7)
  2689.         move.l    d0,d7
  2690.         moveq    #0,d0
  2691.         lea    .CRC16table(pc),a1    ;CRC16 table for speed up
  2692.         move.w    #$ff,d1
  2693.         moveq    #0,d2
  2694. .loop        move.b    (a0)+,d2        ;take a byte
  2695.         eor.w    d2,d0
  2696.         move.w    d0,d5
  2697.         and.w    d1,d0
  2698.         add.w    d0,d0
  2699.         move.w    (a1,d0.w),d0
  2700.         lsr.w    #8,d5
  2701.         eor.w    d5,d0
  2702.         subq.l    #1,d7
  2703.         bne    .loop
  2704.         movem.l    (a7)+,d2/d5/d7/A1
  2705.         rts
  2706.  
  2707. .CRC16table:
  2708.     dc.w  $0000,$c0c1,$c181,$0140,$c301,$03c0,$0280,$c241
  2709.     dc.w  $c601,$06c0,$0780,$c741,$0500,$c5c1,$c481,$0440
  2710.     dc.w  $cc01,$0cc0,$0d80,$cd41,$0f00,$cfc1,$ce81,$0e40
  2711.     dc.w  $0a00,$cac1,$cb81,$0b40,$c901,$09c0,$0880,$c841
  2712.     dc.w  $d801,$18c0,$1980,$d941,$1b00,$dbc1,$da81,$1a40
  2713.     dc.w  $1e00,$dec1,$df81,$1f40,$dd01,$1dc0,$1c80,$dc41
  2714.     dc.w  $1400,$d4c1,$d581,$1540,$d701,$17c0,$1680,$d641
  2715.     dc.w  $d201,$12c0,$1380,$d341,$1100,$d1c1,$d081,$1040
  2716.     dc.w  $f001,$30c0,$3180,$f141,$3300,$f3c1,$f281,$3240
  2717.     dc.w  $3600,$f6c1,$f781,$3740,$f501,$35c0,$3480,$f441
  2718.     dc.w  $3c00,$fcc1,$fd81,$3d40,$ff01,$3fc0,$3e80,$fe41
  2719.     dc.w  $fa01,$3ac0,$3b80,$fb41,$3900,$f9c1,$f881,$3840
  2720.     dc.w  $2800,$e8c1,$e981,$2940,$eb01,$2bc0,$2a80,$ea41
  2721.     dc.w  $ee01,$2ec0,$2f80,$ef41,$2d00,$edc1,$ec81,$2c40
  2722.     dc.w  $e401,$24c0,$2580,$e541,$2700,$e7c1,$e681,$2640
  2723.     dc.w  $2200,$e2c1,$e381,$2340,$e101,$21c0,$2080,$e041
  2724.     dc.w  $a001,$60c0,$6180,$a141,$6300,$a3c1,$a281,$6240
  2725.     dc.w  $6600,$a6c1,$a781,$6740,$a501,$65c0,$6480,$a441
  2726.     dc.w  $6c00,$acc1,$ad81,$6d40,$af01,$6fc0,$6e80,$ae41
  2727.     dc.w  $aa01,$6ac0,$6b80,$ab41,$6900,$a9c1,$a881,$6840
  2728.     dc.w  $7800,$b8c1,$b981,$7940,$bb01,$7bc0,$7a80,$ba41
  2729.     dc.w  $be01,$7ec0,$7f80,$bf41,$7d00,$bdc1,$bc81,$7c40
  2730.     dc.w  $b401,$74c0,$7580,$b541,$7700,$b7c1,$b681,$7640
  2731.     dc.w  $7200,$b2c1,$b381,$7340,$b101,$71c0,$7080,$b041
  2732.     dc.w  $5000,$90c1,$9181,$5140,$9301,$53c0,$5280,$9241
  2733.     dc.w  $9601,$56c0,$5780,$9741,$5500,$95c1,$9481,$5440
  2734.     dc.w  $9c01,$5cc0,$5d80,$9d41,$5f00,$9fc1,$9e81,$5e40
  2735.     dc.w  $5a00,$9ac1,$9b81,$5b40,$9901,$59c0,$5880,$9841
  2736.     dc.w  $8801,$48c0,$4980,$8941,$4b00,$8bc1,$8a81,$4a40
  2737.     dc.w  $4e00,$8ec1,$8f81,$4f40,$8d01,$4dc0,$4c80,$8c41
  2738.     dc.w  $4400,$84c1,$8581,$4540,$8701,$47c0,$4680,$8641
  2739.     dc.w  $8201,$42c0,$4380,$8341,$4100,$81c1,$8081,$4040
  2740.  
  2741. *******************************************************************************
  2742.  
  2743. OPERFINI    DC.B    'Operation finished.'
  2744. OPERFINIEND    DC.B    0
  2745.     EVEN
  2746.  
  2747. INSCOPY    DC.B    'Please insert a copy of your disk'
  2748. INSCOPYEND    DC.B    0
  2749.     EVEN
  2750.  
  2751. WAITPROC    DC.B    'and wait for processing.'
  2752. WAITPROCEND    DC.B    0
  2753.     EVEN
  2754.  
  2755. READY    DC.B    'Ready to start.'
  2756. READYEND    DC.B    0
  2757.     EVEN
  2758.  
  2759. WRITTEN    DC.B    'Written by Egon and Harry.'
  2760. WRITTENEND    DC.B    0
  2761.     EVEN
  2762.  
  2763. NOSELECT    DC.B    'No parameter selected.'
  2764. NOSELECTEND    DC.B    0
  2765.     EVEN
  2766.  
  2767. NOSELECT2    DC.B    '!!! NO PARAMETER SELECTED, GUY !!!'
  2768. NOSELECT2END    DC.B    0
  2769.     EVEN
  2770.  
  2771. ERRORINPARM    DC.B    'Error in parameter execution.'
  2772. ERRORINPARMEND    DC.B    0
  2773.     EVEN
  2774.  
  2775. ERRORINSTRUCT    DC.B    'Error in parameter structure.'
  2776. ERRORINSTRUCTEND    DC.B    0
  2777.     EVEN
  2778.  
  2779. ERRORLENGTH    DC.B    'Wrong file length.'
  2780. ERRORLENGTHEND    DC.B    0
  2781.     EVEN
  2782.  
  2783. ERRORGAME    DC.B    'Possibly another game version.'
  2784. ERRORGAMEEND    DC.B    0
  2785.     EVEN
  2786.  
  2787. WELCOME    DC.B    'Welcome to THE PATCHER!'
  2788. WELCOMEEND    DC.B    0
  2789.     EVEN
  2790.  
  2791. FORMATQUEST    DC.B    'Shall I format that disk in the',0
  2792. FORMATQUEST2    DC.B    'destination drive?',0
  2793.  
  2794. FILENAM    DC.B    'PARAMETER/'
  2795. BUFFILNAM    DS.B    $68
  2796.     EVEN
  2797.  
  2798. LOCKNAM    DC.B    'PARAMETER',0
  2799.     EVEN
  2800.  
  2801. MSGBUFFER    DS.B    $22
  2802.  
  2803. FILNAME    DS.B    $100
  2804. LOCKDISK    DS.B    $100
  2805.  
  2806. RUBY_FNT    DC.L    RUBYNAME        ;FONTNAME
  2807.     DC.W    8                ;HÖHE
  2808.     DC.B    $0                ;STYLE
  2809.     DC.B    $2+8                ;FLAGS
  2810.  
  2811.     DC.W    0
  2812.  
  2813. RUBYNAME    DC.B    'ruby.font',0
  2814.     EVEN
  2815. Window1Daten    dc.w    0            ;leftEdge
  2816.         dc.w    0            ;topEdge
  2817.         dc.w    480            ;width
  2818.         dc.w    180            ;height
  2819.         dc.b    0            ;detailPen
  2820.         dc.b    1            ;blockPen
  2821.         dc.l    ICDMPFL            ;idcmpFlags
  2822.         dc.l    Flaggen            ;flags
  2823.         dc.l    PTCHGADGET        ;firstGadget
  2824.         dc.l    0            ;checkMark
  2825.         dc.l    WINDOWTITEL        ;title
  2826.         dc.l    0
  2827.         dc.l    0            ;bitMap
  2828.         dc.w    500            ;minWidth
  2829.         dc.w    180+2            ;minHeight
  2830.         dc.w    500            ;maxWidth
  2831.         dc.w    180+2            ;maxHeight
  2832.         dc.w    WBENCHSCREEN        ;type
  2833.  
  2834. WindowTitel:    dc.b    "THE PATCHER V1.04",0
  2835.         EVEN
  2836.  
  2837. PTCHGADGET    DC.L    ARROWUP        ;NEXTGADGET
  2838.         DC.W    25        ;LEFTEDGE
  2839.         DC.W    150-6+2        ;TOPEDGE
  2840.         DC.W    65        ;WIDTH
  2841.         DC.W    13        ;HEIGHT
  2842.         DC.W    GADGHIMAGE!GADGIMAGE    ;TYPE
  2843.         DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  2844.         DC.W    BOOLGADGET    ;GADGETTYPE
  2845.         DC.L    PTCHMASKI    ;GADGETRENDER
  2846.         DC.L    PTCHMASKA    ;SELECTRENDER
  2847.         DC.L    0        ;GADGETTEXT
  2848.         DC.L    0        ;MUTUALEXCLUDE
  2849.         DC.L    0        ;SPECIALINFO
  2850.         DC.W    0        ;NUMMER DES GADGETS
  2851.         DC.L    0        ;USERDATA
  2852.  
  2853. PTCHMASKI    DC.W    0        ;LEFTEDGE RELATIV
  2854.         DC.W    0        ;TOPEDGE RELATIV
  2855.         DC.W    65        ;WIDTH
  2856.         DC.W    13        ;HEIGTH
  2857.         DC.W    2        ;DEPTH
  2858.         DC.L    PTCHIIM        ;IMAGEDATA
  2859.         DC.B    %11        ;PLANEPICK
  2860.         DC.B    0        ;PLANEONOFF
  2861.         DC.L    0        ;NEXTIMAGE
  2862.  
  2863. PTCHMASKA    DC.W    0        ;LEFTEDGE RELATIV
  2864.         DC.W    0        ;TOPEDGE RELATIV
  2865.         DC.W    65        ;WIDTH
  2866.         DC.W    13        ;HEIGTH
  2867.         DC.W    2        ;DEPTH
  2868.         DC.L    PTCHAIM        ;IMAGEDATA
  2869.         DC.B    %11        ;PLANEPICK
  2870.         DC.B    0        ;PLANEONOFF
  2871.         DC.L    0        ;NEXTIMAGE
  2872.  
  2873. ARROWUP        DC.L    ARROWDOWN    ;NEXTGADGET
  2874.         DC.W    405+26        ;LEFTEDGE
  2875.         DC.W    8        ;TOPEDGE
  2876.         DC.W    19        ;WIDTH
  2877.         DC.W    11        ;HEIGHT
  2878. AUFLAGS        DC.W    GADGHIMAGE!GADGIMAGE!GADGDISABLED    ;TYPE
  2879.         DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  2880.         DC.W    BOOLGADGET    ;GADGETTYPE
  2881.         DC.L    ARROWUPMASKI    ;GADGETRENDER
  2882.         DC.L    ARROWUPMASKA    ;SELECTRENDER
  2883.         DC.L    0        ;GADGETTEXT
  2884.         DC.L    0        ;MUTUALEXCLUDE
  2885.         DC.L    0        ;SPECIALINFO
  2886.         DC.W    0        ;NUMMER DES GADGETS
  2887.         DC.L    0        ;USERDATA
  2888.  
  2889. ARROWUPMASKI    DC.W    0        ;LEFTEDGE RELATIV
  2890.         DC.W    0        ;TOPEDGE RELATIV
  2891.         DC.W    19        ;WIDTH
  2892.         DC.W    11        ;HEIGTH
  2893.         DC.W    2        ;DEPTH
  2894.         DC.L    AUPIIM        ;IMAGEDATA
  2895.         DC.B    %11        ;PLANEPICK
  2896.         DC.B    0        ;PLANEONOFF
  2897.         DC.L    0        ;NEXTIMAGE
  2898.  
  2899. ARROWUPMASKA    DC.W    0        ;LEFTEDGE RELATIV
  2900.         DC.W    0        ;TOPEDGE RELATIV
  2901.         DC.W    19        ;WIDTH
  2902.         DC.W    11        ;HEIGTH
  2903.         DC.W    2        ;DEPTH
  2904.         DC.L    AUPAIM        ;IMAGEDATA
  2905.         DC.B    %11        ;PLANEPICK
  2906.         DC.B    0        ;PLANEONOFF
  2907.         DC.L    0        ;NEXTIMAGE
  2908.  
  2909. ARROWDOWN    DC.L    PROPGADGET1    ;NEXTGADGET
  2910.         DC.W    405+26        ;LEFTEDGE
  2911.         DC.W    51        ;TOPEDGE
  2912.         DC.W    19        ;WIDTH
  2913.         DC.W    11        ;HEIGHT
  2914. ADFLAGS        DC.W    GADGHIMAGE!GADGIMAGE!GADGDISABLED    ;TYPE
  2915.         DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  2916.         DC.W    BOOLGADGET    ;GADGETTYPE
  2917.         DC.L    ARROWDOWNMASKI    ;GADGETRENDER
  2918.         DC.L    ARROWDOWNMASKA    ;SELECTRENDER
  2919.         DC.L    0        ;GADGETTEXT
  2920.         DC.L    0        ;MUTUALEXCLUDE
  2921.         DC.L    0        ;SPECIALINFO
  2922.         DC.W    0        ;NUMMER DES GADGETS
  2923.         DC.L    0        ;USERDATA
  2924.  
  2925. ARROWDOWNMASKI    DC.W    0        ;LEFTEDGE RELATIV
  2926.         DC.W    0        ;TOPEDGE RELATIV
  2927.         DC.W    19        ;WIDTH
  2928.         DC.W    11        ;HEIGTH
  2929.         DC.W    2        ;DEPTH
  2930.         DC.L    ADOWNIIM    ;IMAGEDATA
  2931.         DC.B    %11        ;PLANEPICK
  2932.         DC.B    0        ;PLANEONOFF
  2933.         DC.L    0        ;NEXTIMAGE
  2934.  
  2935. ARROWDOWNMASKA    DC.W    0        ;LEFTEDGE RELATIV
  2936.         DC.W    0        ;TOPEDGE RELATIV
  2937.         DC.W    19        ;WIDTH
  2938.         DC.W    11        ;HEIGTH
  2939.         DC.W    2        ;DEPTH
  2940.         DC.L    ADOWNAIM    ;IMAGEDATA
  2941.         DC.B    %11        ;PLANEPICK
  2942.         DC.B    0        ;PLANEONOFF
  2943.         DC.L    0        ;NEXTIMAGE
  2944.  
  2945. PROPGADGET1    DC.L    GADGET1        ;NEXTGADGET
  2946.         DC.W    405+26        ;LEFTEDGE
  2947.         DC.W    19        ;TOPEDGE
  2948.         DC.W    19        ;WIDTH
  2949.         DC.W    61-29        ;HEIGHT
  2950. P1FLAGS        DC.W    GADGHCOMP!GADGIMAGE!GADGDISABLED    ;TYPE
  2951.         DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  2952.         DC.W    PROPGADGET    ;GADGETTYPE
  2953.         DC.L    PROP1SEL    ;GADGETRENDER
  2954.         DC.L    0    ;SELECTRENDER
  2955.         DC.L    0        ;GADGETTEXT
  2956.         DC.L    0        ;MUTUALEXCLUDE
  2957.         DC.L    PROPINFO1    ;SPECIALINFO
  2958.         DC.W    0        ;NUMMER DES GADGETS
  2959.         DC.L    0        ;USERDATA
  2960.  
  2961. PROP1SEL    DC.W    0
  2962.     DC.W    0
  2963.     DC.W    11    ;WIDTH
  2964.     DC.W    10    ;HEIGHT
  2965.     DC.W    0
  2966.     DC.L    0
  2967.     DC.B    0
  2968.     DC.B    0
  2969.     DC.L    0
  2970.  
  2971. PROPINFO1    DC.W    AUTOKNOB!FREEVERT    ;FLAGS
  2972.     DC.W    0        ;HORIZPOT
  2973.     DC.W    0        ;VERTPOT
  2974.     DC.W    $3333        ;HORIZBODY
  2975.     DC.W    $2000        ;VERTBODY
  2976.     DC.W    0        ;CWIDTH
  2977.     DC.W    0        ;CHEIGHT
  2978.     DC.W    0        ;HPOTRES
  2979.     DC.W    0        ;VPOTRES
  2980.     DC.W    0        ;LEFTBORDER
  2981.     DC.W    0        ;TOPBORDER
  2982.  
  2983. GADGET1    DC.L    GADGET2        ;NEXTGADGET
  2984.     DC.W    28        ;LEFTEDGE
  2985.     DC.W    10        ;TOPEDGE
  2986.     DC.W    400        ;WIDTH
  2987.     DC.W    10        ;HEIGHT
  2988. G1FLAGS    DC.W    GADGHCOMP    ;TYPE
  2989.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  2990.     DC.W    BOOLGADGET    ;GADGETTYPE
  2991.     DC.L    0        ;GADGETRENDER
  2992.     DC.L    0        ;SELECTRENDER
  2993.     DC.L    GTEXT1        ;GADGETTEXT
  2994.     DC.L    0        ;MUTUALEXCLUDE
  2995.     DC.L    0        ;SPECIALINFO
  2996.     DC.W    0        ;NUMMER DES GADGETS
  2997.     DC.L    0        ;USERDATA
  2998.  
  2999. GTEXT1    DC.B    1    ;FRONTPEN
  3000.     DC.B    0    ;BACKPEN
  3001.     DC.B    JAM2    ;DRAWMODE
  3002.     EVEN
  3003.     DC.W    2    ;LEFTEDGE
  3004.     DC.W    1    ;TOPEDGE
  3005.     DC.L    RUBY_FNT    ;FONT
  3006. T1PTR    DC.L    TEXT1    ;TEXT
  3007.     DC.L    0    ;NÄCHSTER TEXT
  3008.  
  3009. GADGET2    DC.L    GADGET3        ;NEXTGADGET
  3010.     DC.W    28        ;LEFTEDGE
  3011.     DC.W    20        ;TOPEDGE
  3012.     DC.W    400        ;WIDTH
  3013.     DC.W    10        ;HEIGHT
  3014. G2FLAGS    DC.W    GADGHCOMP!GADGDISABLED    ;TYPE
  3015.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3016.     DC.W    BOOLGADGET    ;GADGETTYPE
  3017.     DC.L    0        ;GADGETRENDER
  3018.     DC.L    0        ;SELECTRENDER
  3019.     DC.L    GTEXT2        ;GADGETTEXT
  3020.     DC.L    0        ;MUTUALEXCLUDE
  3021.     DC.L    0        ;SPECIALINFO
  3022.     DC.W    0        ;NUMMER DES GADGETS
  3023.     DC.L    0        ;USERDATA
  3024.  
  3025. GTEXT2    DC.B    1    ;FRONTPEN
  3026.     DC.B    0    ;BACKPEN
  3027.     DC.B    JAM2    ;DRAWMODE
  3028.     EVEN
  3029.     DC.W    2    ;LEFTEDGE
  3030.     DC.W    1    ;TOPEDGE
  3031.     DC.L    RUBY_FNT    ;FONT
  3032. T2PTR    DC.L    TEXT1    ;TEXT
  3033.     DC.L    0    ;NÄCHSTER TEXT
  3034.  
  3035. GADGET3    DC.L    GADGET4        ;NEXTGADGET
  3036.     DC.W    28        ;LEFTEDGE
  3037.     DC.W    30        ;TOPEDGE
  3038.     DC.W    400        ;WIDTH
  3039.     DC.W    10        ;HEIGHT
  3040. G3FLAGS    DC.W    GADGHCOMP!GADGDISABLED    ;TYPE
  3041.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3042.     DC.W    BOOLGADGET    ;GADGETTYPE
  3043.     DC.L    0        ;GADGETRENDER
  3044.     DC.L    0        ;SELECTRENDER
  3045.     DC.L    GTEXT3        ;GADGETTEXT
  3046.     DC.L    0        ;MUTUALEXCLUDE
  3047.     DC.L    0        ;SPECIALINFO
  3048.     DC.W    0        ;NUMMER DES GADGETS
  3049.     DC.L    0        ;USERDATA
  3050.  
  3051. GTEXT3    DC.B    1    ;FRONTPEN
  3052.     DC.B    0    ;BACKPEN
  3053.     DC.B    JAM2    ;DRAWMODE
  3054.     EVEN
  3055.     DC.W    2    ;LEFTEDGE
  3056.     DC.W    1    ;TOPEDGE
  3057.     DC.L    RUBY_FNT    ;FONT
  3058. T3PTR    DC.L    TEXT1    ;TEXT
  3059.     DC.L    0    ;NÄCHSTER TEXT
  3060.  
  3061. GADGET4    DC.L    GADGET5        ;NEXTGADGET
  3062.     DC.W    28        ;LEFTEDGE
  3063.     DC.W    40        ;TOPEDGE
  3064.     DC.W    400        ;WIDTH
  3065.     DC.W    10        ;HEIGHT
  3066. G4FLAGS    DC.W    GADGHCOMP!GADGDISABLED    ;TYPE
  3067.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3068.     DC.W    BOOLGADGET    ;GADGETTYPE
  3069.     DC.L    0        ;GADGETRENDER
  3070.     DC.L    0        ;SELECTRENDER
  3071.     DC.L    GTEXT4        ;GADGETTEXT
  3072.     DC.L    0        ;MUTUALEXCLUDE
  3073.     DC.L    0        ;SPECIALINFO
  3074.     DC.W    0        ;NUMMER DES GADGETS
  3075.     DC.L    0        ;USERDATA
  3076.  
  3077. GTEXT4    DC.B    1    ;FRONTPEN
  3078.     DC.B    0    ;BACKPEN
  3079.     DC.B    JAM2    ;DRAWMODE
  3080.     EVEN
  3081.     DC.W    2    ;LEFTEDGE
  3082.     DC.W    1    ;TOPEDGE
  3083.     DC.L    RUBY_FNT    ;FONT
  3084. T4PTR    DC.L    TEXT1    ;TEXT
  3085.     DC.L    0    ;NÄCHSTER TEXT
  3086.  
  3087. GADGET5    DC.L    0        ;NEXTGADGET
  3088.     DC.W    28        ;LEFTEDGE
  3089.     DC.W    50        ;TOPEDGE
  3090.     DC.W    400        ;WIDTH
  3091.     DC.W    10        ;HEIGHT
  3092. G5FLAGS    DC.W    GADGHCOMP!GADGDISABLED    ;TYPE
  3093.     DC.W    RELVERIFY    ;!BOOLEXTEND    ;ACTIVATION
  3094.     DC.W    BOOLGADGET    ;GADGETTYPE
  3095.     DC.L    0        ;GADGETRENDER
  3096.     DC.L    0        ;SELECTRENDER
  3097.     DC.L    GTEXT5        ;GADGETTEXT
  3098.     DC.L    0        ;MUTUALEXCLUDE
  3099.     DC.L    0        ;SPECIALINFO
  3100.     DC.W    0        ;NUMMER DES GADGETS
  3101.     DC.L    0        ;USERDATA
  3102.  
  3103. GTEXT5    DC.B    1    ;FRONTPEN
  3104.     DC.B    0    ;BACKPEN
  3105.     DC.B    JAM2    ;DRAWMODE
  3106.     EVEN
  3107.     DC.W    2    ;LEFTEDGE
  3108.     DC.W    1    ;TOPEDGE
  3109.     DC.L    RUBY_FNT    ;FONT
  3110. T5PTR    DC.L    TEXT1    ;TEXT
  3111.     DC.L    0    ;NÄCHSTER TEXT
  3112.  
  3113.  
  3114. TEXT1    DC.B    0
  3115.     EVEN
  3116.  
  3117. SRCINFO    DC.B    'Source drive is '
  3118. SRCDEVICE    DC.B    'DF0:',0
  3119.     DS.B    120
  3120.     EVEN
  3121.     DC.B    0
  3122. DESTINFO    DC.B    'Destination drive is '
  3123. DESTDEVICE    DC.B    'DF0:',0
  3124.     DS.B    120
  3125.     EVEN
  3126. PARAMFILENAM    DC.B    0
  3127.     DS.B    200
  3128.     EVEN
  3129.  
  3130. SOURCEIORQ
  3131.     DC.L    0
  3132. DESTIORQ
  3133.     DC.L    0
  3134. BOOTIORQ
  3135.     DC.L    0
  3136.  
  3137. TEXT3    DC.B    'CANCEL',0
  3138.     EVEN
  3139. TEXT2    DC.B    'OK',0
  3140.     EVEN
  3141. BODYTEXT    DC.B    0    ;FRONTPEN
  3142.     DC.B    1        ;BACKPEN
  3143.     DC.B    1        ;DRAWMODE
  3144.     EVEN
  3145.     DC.W    $E        ;LINKER RAND DES TEXTES
  3146.     DC.W    6        ;OBERER RAND DES TEXTES
  3147.     DC.L    0        ;ZEICHENSATZ STANDARD
  3148. ASKING    DC.L    0        ;DARZUSTELLENDER TEXT
  3149.     DC.L    BODYTEXT2        ;LINK ZU WEITEREN STRUKTUREN
  3150.  
  3151. BODYTEXT2    DC.B    0    ;FRONTPEN
  3152.     DC.B    1        ;BACKPEN
  3153.     DC.B    1        ;DRAWMODE
  3154.     EVEN
  3155.     DC.W    $E        ;LINKER RAND DES TEXTES
  3156.     DC.W    6+9        ;OBERER RAND DES TEXTES
  3157.     DC.L    0        ;ZEICHENSATZ STANDARD
  3158. ASKING2    DC.L    0        ;DARZUSTELLENDER TEXT
  3159.     DC.L    0        ;LINK ZU WEITEREN STRUKTUREN
  3160.  
  3161. RIGHTTEXT    DC.B    0
  3162.     DC.B    1
  3163.     DC.B    1
  3164.     EVEN
  3165.     DC.W    6
  3166.     DC.W    3
  3167.     DC.L    0
  3168.     DC.L    TEXT3
  3169.     DC.L    0
  3170.  
  3171. LEFTTEXT    DC.B    0
  3172.     DC.B    1
  3173.     DC.B    1
  3174.     EVEN
  3175.     DC.W    6
  3176.     DC.W    3
  3177.     DC.L    0
  3178.     DC.L    TEXT2
  3179.     DC.L    0
  3180.  
  3181. ;--------------------------------------------------------------------------
  3182.  
  3183. POINTARRAY1
  3184.     DC.W    25+405,8
  3185.     DC.W    25,8
  3186.     DC.W    25,61
  3187.     DC.W    25+405,61
  3188.     DC.W    25+405,8
  3189.  
  3190. POINTARRAY2
  3191.     DC.W    449,71
  3192.     DC.W    25,71
  3193.     DC.W    25,103
  3194.     DC.W    449,103
  3195.     DC.W    449,71
  3196.  
  3197. POINTARRAY3
  3198.     DC.W    449,113
  3199.     DC.W    25,113
  3200.     DC.W    25,135
  3201.     DC.W    449,135
  3202.     DC.W    449,113
  3203.  
  3204. DISKFNTBASE    DC.L    0
  3205. PARAMCOUNT    DC.W    10
  3206. PARAMTABBASE    DC.L    0
  3207.  
  3208. DOSBAS        DC.L    0        ;\
  3209. FILEMEMADR    DC.L    0        ; \
  3210. INTUIBASE    DC.L    0        ;  \
  3211. GRABASE        DC.L    0        ;   \
  3212. WINDOW1        DC.L    0        ;    \
  3213. STRFILNAME    DC.L    0        ;     \
  3214. FILPTR        DC.L    FILNAME        ;      \
  3215. FILSIZE        DC.L    0        ;       \
  3216. LOCKDISKPTR    DC.L    LOCKDISK    ;        \
  3217. OPENDEVICE    DC.L    OPENDEV        ;         \
  3218. DEVICESOURCEPTR    DC.L    0        ;          )
  3219. DEVICEDESTPTR    DC.L    0        ;         /
  3220. SPACE        DC.L    SPECIALSPACE    ;        /
  3221. FORMATZIEL    DC.L    FORMATDEST    ;       /
  3222. REQUEST        DC.L    ASKREQUEST    ;      /
  3223. FSSMSOURCEPTR    DC.L    0        ;     /
  3224. FSSMDESTPTR    DC.L    0        ;    /
  3225. INHIBITDR    DC.L    INHIBITDRIVE    ;   /
  3226. ENABLEDR    DC.L    ENABLEDRIVE    ;  /
  3227. CRC16        DC.L    CRCEVAL        ; /
  3228. RESERVED    DS.B    $44        ;/
  3229.  
  3230. WIN1RASTPORT    DC.L    0
  3231. PARAMLOCK    DC.L    0
  3232. MEMORYBASE    DC.L    0
  3233. FILHANDLE    DC.L    0
  3234. OSSTACK        DC.L    0
  3235. LENGTHBODY    DC.W    0
  3236. POSOFPROP    DC.W    0
  3237. SIGNALSTORE    DC.L    -1
  3238. DOSPACKETS    DC.L    0
  3239. MYPORT    DC.L    0
  3240. FILENAMEGIVEN    DC.B    0
  3241. PORTOK    DC.B    0
  3242. EXEC1PARAM    DC.B    0
  3243.     EVEN
  3244. IntuiName    dc.b    "intuition.library",0
  3245.         EVEN
  3246. graName        Dc.b    "graphics.library",0
  3247.         even
  3248. DISKFNTNAME    DC.B    'diskfont.library',0
  3249.     EVEN
  3250. DOSNAM        DC.B    'dos.library',0
  3251.     EVEN
  3252.  
  3253. ROOTBL    INCBIN    ROOTBL
  3254.  
  3255. BOOTBL
  3256.     DC.B    $44,$4F,$53,$00,$C0,$20,$0F,$19
  3257.     DC.B    $00,$00,$03,$70,$43,$FA,$00,$18
  3258.     DC.B    $4E,$AE,$FF,$A0,$4A,$80,$67,$0A
  3259.     DC.B    $20,$40,$20,$68,$00,$16,$70,$00
  3260.     DC.B    $4E,$75,$70,$FF,$60,$FA,$64,$6F
  3261.     DC.B    $73,$2E,$6C,$69,$62,$72,$61,$72
  3262.     DC.B    $79,$00
  3263. BOOTEND
  3264.  
  3265.     SECTION    PRG2,BSS
  3266. PARAMINFO    DS.B    $104
  3267.  
  3268.     SECTION    PRG3,BSS
  3269. INFODAT    DS.B    $24
  3270.  
  3271.     SECTION    PRG4,BSS_C
  3272. SPECIALSPACE    DS.B    $C000
  3273.  
  3274.     SECTION    PRG5,DATA_C
  3275. PTCHIIM    INCBIN    GFX/PTCHINACTIVE
  3276. PTCHAIM    INCBIN    GFX/PTCHACTIVE
  3277. AUPIIM    INCBIN    GFX/ARROWUPI
  3278. AUPAIM    INCBIN    GFX/ARROWUPA
  3279. ADOWNIIM    INCBIN    GFX/ARROWDOWNI
  3280. ADOWNAIM    INCBIN    GFX/ARROWDOWNA
  3281.